Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442

    [C++] Mutua inclusione tra oggetti

    Ciao a tutti, ho un problema non riesco a capire la sintassi esatta per far compilare questo codice, ho due classi ed ognuna deve avere tra i suoi campi un puntatore all'altra, quindi semplificando al massimo ho i seguenti files a.cpp a.h b.cpp b.h il problema in particolare è sui file .h

    codice:
    // file a.h
    #include "b.h"
    
    class a {
      b *bptr;
    };
    
    // file b.h
    #include "a.h"
    
    class b {
      a *aptr;
    };
    mentre nei file .cpp posso usare entrambi i tipi senza nessun problema.

    Per il momento ho risolto usando in una delle due classi un puntatore a void e facendo i cast nel file cpp, ma sono sicuro che esiste una soluzione migliore.

    Qualche idea?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Potresti scrivere

    // file a.h //
    class b;

    class a {
    b *bptr;
    };
    /////////////

    // file b.h //
    class a;

    class b {
    a *aptr;
    };
    /////////////

  3. #3
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Allora, ho dimenticato di mettere le ifdef nell'esempio che ho scritto, ma cmq ci sono nei file originali.
    Anche includendo i due file nel main il problema si presenta lo stesso. L'errore riportato è:
    codice:
    Node.h:31: error: ISO C++ forbids declaration of 'Network' with no type
    Node.h:31: error: expected ';' before '*' token
    Dove Network è la classe a e Node la classe b dell'esempio.

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa .. non ti seguo ...

  5. #5
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Ora con la modifica che hai fatto sembra funzionare, e non ci dovrebbe essere nessun problema, nei file .h in quanto al compilatore basta sapere che a e b sono classi. L'unico problema è che mi perdo le typedef fatte per i container, cmq risolverò in qualche modo.

    Grazie mille.

  6. #6
    Utente di HTML.it L'avatar di fabi080
    Registrato dal
    Mar 2002
    Messaggi
    442
    Originariamente inviato da oregon
    Scusa .. non ti seguo ...
    Avevo letto la risposta prima della modifica, di nuovo grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.