PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C++: zwei klassen doppelt verknüpfen?


Actionhank
2006-01-27, 11:05:39
gibt es eine möglichkeit für:



class Object1 {
//data
Object2* mpObject2;
};

class Object2 {
//data
Object1* mpObject1;
};



kompilieren kann ichs nicht, weil ich in beiden header jeweils den anderen includen muss. gibt es eine andere möglichkeit dafür???

Neomi
2006-01-27, 11:54:56
Das geht so:

class Object2; // das sagt dem Compiler, daß die Klasse später definiert wird

class Object1 {
//data
Object2* mpObject2;
};

class Object2 {
//data
Object1* mpObject1;
};

Die Implementationsdetails sind da natürlich noch nicht bekannt, also kannst du in der Klassendeklaration nur den Pointer vormerken. Aber in der jeweiligen cpp (die dann beide Header inkludiert) kannst du die andere Klasse dann komplett nutzen.

Trap
2006-01-27, 11:55:49
class Object1;

class Object2 {
//data
Object1* mpObject1;
};

Man braucht nicht die komplette Definition der anderen Klasse, man muss nur sagen dass es eine ist. Die Definition braucht man erst wenn man irgendwelche Operationen aufrufen möchte.

Actionhank
2006-01-27, 13:23:07
super, hat geklappt.

thx