Uebergabe von Objekten von einer Klasse zur anderen



  • Hallo, also ich will ein Mygrid-Objekt g von class MyLevelIterator zu class MyEntity kriegen. Die beiden Klassen sind Unterklassen von class Mygrid, und class MyEntity soll von class OldEntity abgeleitet sein.
    Ich mache also ein privates MyEntity-Objekt in class MyLevelIterator, und will dann beim Konstruktor von MyLevelIterator den Copy_konstruktor von MyEntity aufrufen.Mit anderen Worten: sobald der Konstruktor von MyLevelIterator aufgerufen wird, hat auch class MyEntity das g-Objekt.

    Fehlermeldung:
    1)bzgl.Zeile "MyEntity virtualEntity_;"
    incomplete type is not allowed
    Den Typ MyEntity kennt aber class MyLevelIterator!
    2) bzgl. Aufruf des Copy-Konstruktors:
    no default constructor for class MyEntity exists.
    Wozu brauche ich denn hier bitte nen default-Konstruktor?????

    Waere wirklich sehr dankbar, wenn mir da jemand weiterhelfen kann!

    class MyGrid
    {
    class MyLevelIterator
    {
    public:
    MyLevelIterator (Mygrid& g, int level): virtualEntity_(g,level)
    {}

    private:
    MyEntity virtualEntity_;

    }

    class MyEntity: public OldEntity
    {
    public:
    MyEntity(Mygrid g, int lev)
    {}

    }
    }



  • christoph2 schrieb:

    Die beiden Klassen sind Unterklassen

    Auch als "nested class" bekannt.

    Du solltest dir auch nochmal die Syntax genauer anschaun. Am Ende der Klassendefinition fehlt zB das Semikolon.

    MyEntity virtualEntity_;
    

    MyEntity ist hier doch noch gar nicht bekannt. Forwärtsdeklarationen könnten dir hier evtl. weiterhelfen. Oder wenn du die Klasse MyEntity vor MyLevelIterator definierst, besteht evtl. die Möglichkeit, dass die Sache sogar funktioniert.


Anmelden zum Antworten