Liste aus anderer Klasse aufrufen
-
Hallo,
ich habe eine Klasse in der ich eine Liste deklariere.class name { public: struct test{ ... }; std::list<test> liste; std::list<test>::iterator it_begin; }Nun will ich nun auf die Liste "liste" mit einer Funktion aus einer anderen Klasse zugreifen.
Aus der selben Klasse heraus mach ich ganz einfach liste.Funktion. Da ist das klar.Auf die sturktur aus einer anderen Klasse ist auch klar, da machen ich name::test xy; sofern ich ein neue element brauche.
aber was muß ich machen um auf die liste von einer anderen Klasse zuzugreifen?
wenn ich liste.push_back(..) kommt undeklared indentifier (klar weil ich die Klasse nicht definiert habe)
Wenn ich aber Name::liste.push_... kommt "'.push_back' must have class/struct/union" (fehlt ihm da vllt ein objekt??)
Ich habe mir überlegt einen pointer auf die Liste zu machen, aber über den habe ich es bisher auch noch nicht geschafft zuzugreifen.
Kann mir hier vllt jemand helfen??
Gruß und danke
-
Meinst du sowas:
class A { public: struct xy { ....; }; std::list< A > liste; } class B { public: void doSomething( A& ); }; void B::doSomething( A& aObjekt ) { aObjekt.liste.push_back( irgendwas ); } int main() { A aObjekt; B bObjekt; bObjekt.doSomething( aObjekt ); }Lg freeG
-
Du übergibst die Liste oder gleich die ganze Klasse (sofern diese Zugriff auf die Liste erlaubt) einfach der Funktion die diese benutzen soll. Dabei ist es egal ob die Funktion frei oder Member einer anderen Klasse ist.
Wobei mir dieses Design sehr zweifelhaft vorkommt, wenn man von außerhalb an den Daten einer Klasse herumspielt.
-
Ich würde aber auch eher die Member privat deklarieren und dann in deiner Klasse dann für die einzelnen Funktionen wie push_back Funktionen in die Schnittstelle einbauen, so kannst du dann über eine andere Klasse oder freie Funktionen mit der Schnittstelle deiner Klasse Daten hinzufügen oder was du eben machen willst.
Lg freeG