gegenseitiger zugriff auf klassen



  • class a;
    
    class b{
       public:
       void DO(a x)
       { x.i++;}
    };
    class a{
        public:
        int i;
        void b(b a)
        { b.DO;}
    };
    

    gibt

    test.cc: In member function »void b::DO(a)«:
    test.cc:5: Fehler: »x« has incomplete type
    test.cc:1: Fehler: forward declaration of »struct a«
    test.cc: At global scope:
    test.cc:12: Fehler: Deklaration von »void a::b(b)«
    test.cc:3: Fehler: verändert die Bedeutung von »b« von »class b«
    test.cc: In member function »void a::b(b)«:
    test.cc:12: Fehler: »((a*)this)->a::b« hat keinen Klassentyp
    

    Hilfe wie geht das???


  • Mod

    Der Typ eines Parameters einer Funktion muss bei der Deklaration dieser Funktion nicht vollständig sein, wohl aber bei deren Definition (oder beim Aufruf derselben).
    =>
    Definiere die Funktionen nach der Definition von class a und class b.

    class a;
    
    class b{
       public:
       void DO(a x);
    };
    class a{
        public:
        int i;
        void b(b a);
    };
    void b::DO(a x)
    { x.i++;}
    void a::b(b a)
    { b.DO();}
    


  • Ok hätte ich mir denken können 🙂

    DANKE

    jetzt weiß ich mehr


Anmelden zum Antworten