std::list Wie bekomme ich den zeiger zurück ?
-
1 * Kopf ---- > KopfItem <---- pobPosition | | | | Unterkopf UnterkopfItem <---- pobUnterposition
-
Rixa schrieb:
Ich möchte , ( ich denke , dass das geht ) den Zeiger , mit dem der Kopf auf seine Collection :pobPositionen zeigt , holen und ihn auf die Collection
pobUnterposition zeigen lassen.Welcher Zeiger denn?
Namen sind Schall und Ruach und lenken in diesem Falle nur ab, ich versuch noch mal, das Ganze zu ordnen:class ItemA { /* ... */ }; class ItemB : public ItemA { /* ... */ }; class A { public: std::list<ItemA*> m_a; }; class B : public A { public: std::list<ItemB*> m_b; };was nun? welches Problem soll glöst werden?
-
Danke codetagger !
So wollte ich es dartsellen !Hallo Camper,
Ich möchte jetzt dass die Klasse A auf die Elemente der Collection
std::list<ItemB*> m_b zugreifen kann.Normaleweise kann sie das nicht , aber wenn ich der Klasse A sagen kann ,
du hast jetzt die Collection m_b und nicht m_a dann müsste es gehen .
Aber wie ?Viele Grüße ,Rixa
-
Rixa schrieb:
Ich möchte jetzt dass die Klasse A auf die Elemente der Collection
std::list<ItemB*> m_b zugreifen kann.m_b von welchem Objekt vom Typ B?
-
Hallo camper,
m_b von welchem Objekt vom Typ B?
ja. Ich benutze deine Dekl. die m_b Liste hängt am Objkt der Klasse B.
Ich möchte aber , dass Objekt der Klasse A sie kennt .
Rixa
-
rixa schrieb:
ja. Ich benutze deine Dekl. die m_b Liste hängt am Objkt der Klasse B.
Ich möchte aber , dass Objekt der Klasse A sie kennt.
Dann musst du sie zur Membervariable der Klasse A machen..
-
Hallo Badestrand,
Dann musst du sie zur Membervariable der Klasse A machen..
Das kann ich nicht . Die Basisklasse gehört zur Fremdimplementation.
Grüße , Rixa
-
Wenn du ein Objekt vom Typ A hast (erzeugt durch
A a;oderA* a = new A();), dann kannst du nicht an die Liste von B rankommen, das geht einfach nicht, weil sie in dem Objekt einfach nicht existiert. Genauso wenig, wie ich jetzt innerhalb von drei Sekunden einen warmen Kaffee aus Peru in der Hand halten könnte.
-
Hallo Rixa,
da kann ich Badestrand absolut recht geben.
Falls du dich jetzt dazu entscheiden willst aus der Liste nen Zeiger
auf eine Liste zu machen und den in dem Konstruktor von Unterkopf
umbiegen willst, kriegst du allerdings auch Probleme.class Kopf { protected: std::list<Position*>* m_pobPosition; }; class UnterKopf : public Kopf { public: UnterKopf(); private: std::list<UnterPosition*> m_upobPosition; }; UnterKopf::UnterKopf(){ m_pobPosition = &m_upobPosition; // Das geht leider nicht }http://www.research.att.com/~bs/bs_faq2.html#conversion
Ich wollte dich nur schonmal vorwarnen

Ich glaub auf sowas wolltest du eigentlich hinaus.
Sowas kann man wohl mit Templates (solange es nicht virtual ist) umgehen.
Wenn du eigentlich darauf hinaus wolltest, sag Bescheid, ich kuck morgen
(äh, heute abend) wieder rein.btw: Soll Unterkopf denn auch ne Position-Liste haben oder nur eine
Unterposition-Liste?Gruß,
CSpille
-
Hallo CSpille ,
vielen Dank ! Ja , genau so wollte ich es machen.
Hmm, schade das es nicht geht.
Viele Grüße, Rixa