Zwei kurze Fragen
-
hi,
b muss ein zeiger sein, damit du nicht sowas machst:
class A { B b; }; class B { A a; };
-
Referenz geht auch noch.
kurt
-
also erstmal danke für die Antworten.
Aber was mache ich, wenn ich jetzt ein Objekt von B benötige??
Dann bin ich doch aufgeschmissen oder??
-
nightrider schrieb:
Aber was mache ich, wenn ich jetzt ein Objekt von B benötige??
Dann bin ich doch aufgeschmissen oder??Die Frage versteh ich nicht.
Kurt
-
Dann musst du eben die Definition von B einbinden.
Gruß
-
Die Frage versteh ich nicht.
Wenn ich jetzt keinen Pointer benötige, der auf B zeigt, sonder ein konkretes Objekt von B.
Dann musst du eben die Definition von B einbinden.
Sorry, das versteh ich jetzt wieder nicht.
-
class B { }; class A { B b; };
-
nightrider schrieb:
Wenn ich jetzt keinen Pointer benötige, der auf B zeigt, sonder ein konkretes Objekt von B.
Wenn du "nur" einen pointer hast der auf ein B zeigt dann musst du den pointer eben dereferenzieren.
class B { public: void do_something() {}; }; class A { void use_b() { b->do_something(); } B * b; };Kurt
-
Die Idee von ss ist eigentlich nicht blöd

nur ist das keine wirkliche Problemlösung.@Zuk
Erstmal danke für dein Engagement (hoffentlich richtig geschrieben), aber ich wollte eigentlich nur wissen, was man macht, wenn man KEINEN pointer, sondern ein OBJEKT benötigt.Also wenn das so ausschaut:
class A
{
B b;
};
class B
{};
Ich weiß jetzt, dass so was nicht möglich ist, nur was ist, wenn man so was mal benötigt???
-
nur ist das keine wirkliche Problemlösung.
weil...
-
naja, wenn man mehrere Klassen hat, und man verschiedene Objekte in verschiedenen Klassen benötigt, funktioniert sowas unter umständen nicht.
Außerdem möchte ich entscheiden können, welche Klasse ich wann definiere und ob ich
eine Pointervariable oder ein Objekt erzeuge...
-
Pack jede Klasse in eine Header-Datei und die kannst du dann überall einbinden.
-
Jo das klingt gut, scheint die einzig sinnvolle Lösung zu sein...
Vielen Dank
-
header.h schrieb:
Pack jede Klasse in eine Header-Datei und die kannst du dann überall einbinden.
Wenn sich die Klassen gegenseitig referenzieren geht's nicht. Eine der beiden kann nur einen Pointer oder eine Referenz auf die andere als membervariable haben.
Kurt
PS: wär ja auch nicht sinnvoll. A enthält B das ein A enthält das wieder ein B enthält ....
-
Jo, das ist klar..
-
nightrider schrieb:
class A
{
B b;
};
class B
{};
Ich weiß jetzt, dass so was nicht möglich ist, nur was ist, wenn man so was mal benötigt???
wenn der code wirklich so aussieht, dann steht B in der hierarchie höher als A. also muss B auch weiter oben stehen, als A.
bzw, A muss den header von B includieren. du brauchst A _nicht_ zuerst definieren...gemein wirds, wenn B auch einen verweis auf A braucht. dann wirds hässlich. (das ist einer der fälle, wo gewisse subjekte aus dem board sagen "das design ist mist", wobei ich noch keinen konkreten vorschlag gelesen habe, wie man's besser macht.
)