Beiträge von paralax

    Zitat von buechsengustel

    paralax: Shine hatte schon recht, dein Code laesst sich zwar vielleicht kompilieren, aber nicht verwenden: Versuch mal, ein Objekt der Klasse A anzulegen. Dazu wuerdest du zuerst ein Objekt der Klasse B benoetigen, und umgekehrt genauso.

    ja da hast du recht in meinem fall müßt man einmal nen nullptr setzen und könnt das nie wieder umstellen, da müßt man halt ne setmethode einführen und das im nachhinein zurechtbiegen, dann ginge das ohne probleme :)

    Zitat von Shine

    was aber durchaus net geht, is, wenn du für beide klassen den pointer auf die andere klasse im constructor setzen willst (also mit übergabe) und es gibt keine andere möglichkeit ein objekt zu instanzieren und wenn der pointerwert ungleich null ist, weil dann is es wirklich henne-ei, aber das kann man ja mithilfe von nachträglichem setzen bzw. mit hilfe des null lassens umgehen ;)

    lg Shine

    file: A.h

    class B; // forward
    class A
    {
    public:
    A(B*b);
    private:
    B* b;
    }

    file: a.cpp

    #include "A.h"
    #include "B.h"

    A:A(B*b){this->b=b;}

    file: B.h

    class A; // forward
    class B
    {
    public:
    B(A*a);
    private:
    A* a;
    }

    file: b.cpp

    #include "A.h"
    #include "B.h"

    B:B(a*a){this->a=a;}

    in den cpp files ist es dann auch kein problem ganz normal mit der jeweils anderen Klasse zu arbeiten, nur im header muß man aufpassen, daß keine zyklischen Abhängigkeiten auftauchen, z.b. eben durch forwards und pointer. Diese Sache macht man sich z.B. auch im PIMPL idiom zu Nutze.