2016-04-08 8 views
0

Ich habe Klasse1, die Header der Klasse2.And Klasse2 benötigt, die Header der Klasse1 benötigt, um einbezogen zu werden.Wie mit codeabhängigen Klassen in C++ umgehen

I enthalten Header von class2 in class1 und Kopf von class1 in class2 und Probleme begannen (in Klasse 2-I-Fehler erhalten, dass class1 Beispiel nennen keine Klasse)

Bitte kann mir jemand erklären, wie man damit umgehen Situation, weil ich diese Frage gegoogelt aber nicht bekommen, was Sie diese

Antwort

3

Eine häufig anwendbare Lösung zu tun

danken ist, einfach die Klassen voraus erklären. Zum Beispiel:

class1.h
#ifndef CLASS1_H 
#define CLASS1_H 

class Class2; 
class Class1 { 
public: 
    // ... 
private: 
    // ... 
    std::unique_ptr<Class2> owned_child_; 
    // ... 
}; 

#endif 
class2.h
#ifndef CLASS2_H 
#define CLASS2_H 

class Class1; 
class Class2 { 
public: 
    // ... 
private: 
    // ... 
    const Class1* unowned_parent_; 
    // ... 
}; 

#endif 

Beachten Sie jedoch, dass diese Strategie funktioniert nur so lange, wie Sie nicht schreiben Code, der die Definition des erfordert Klasse verfügbar sein, was erreicht werden kann, wenn Zeiger oder Verweise auf den Typ der Klasse verwendet werden. Sobald Sie den Klassentyp ohne Referenz oder Zeiger verwenden, müssen Sie die vollständige Deklaration der bereits verarbeiteten und verfügbaren Klasse verfügbar haben.

+0

Vielen Dank Jetzt weiß ich über Vorwärtsdeklaration, die mein Problem gelöst hat –