instanz einer klasse
-
zur verdeutlichung meiner frage habe ich ein kleines beispiel erstellt.
und zwar geht es darum wann ich eine Instanz einer klasse mitB m_klasseB;und wann mit
B* m_klasseBerstelle.
und wie ich später richtig darauf zugreife:
m_klasseB.MethodeB1();oder
m_klasseB->MethodeB1();bzw. worin der unterschied liegt
class A
{public:
MethodeA1();
MethodeA2();B m_klasseB;
//B* m_klasseB
}class B
{public:
MethodeB1();
MethodeB2();}
A::MethodeA1()
{
m_klasseB.MethodeB1();
m_klasseB->MethodeB1();
}[/code]
-
B* m_klasseB;
da musst du noch new aufrufen!!!!!! sonst kracht es, aber gewaltig.
-
bbbbb schrieb:
B* m_klasseB;
da musst du noch new aufrufen!!!!!! sonst kracht es, aber gewaltig.
Nicht zwangsläufig.
Man muss sich nur bewusst sein, dass das nur ein Zeiger ist, keine Instanz. Solange man diesen Zeiger nicht auf eine Instanz von B zeigen lässt (z.B. indem man ihm den Rückgabewert von new zuweist), kann man ihn nicht benutzen.
-
gut.
ich verwende nun folgendesB m_klasseBdann kann ich mir wohl auch das new sparen.
und könnt ihr mir noch etwas zum unterschied von
m_klasseB->MethodeB1();und
m_klasseB.MethodeB1();sagen?
ihr könnt mir auch gerne recht ausführlich anworten, da ich auch versuche zu verstehen, was dabei passiert oder unterschiedlich ist.
-
Der Aufruf mit dem Pfeil funktioniert nur, wenn links ein Zeiger steht (oder wenn es eine Überladung des Pfeiloperators für diese Klasse gibt). Der Aufruf mit dem Punkt braucht ein Objekt (oder eine Referenz) auf der linken Seite und ist nicht überladbar.
Wenn man überladene Operatoren außer Betracht lässt, ist
a->b
gleichbedeutend mit
(*a).b