Forwarddeklaration in Templateklassen



  • Hallo zusammen!

    Trotz Feiertagsstimmung eine kleine Frage:
    Wie krieg ich es den fertig, dass sich zwei Templateklassen gegenseitig
    kennen? Auf den ersten Blick hätte ich gesagt, dass es mit Forwarddeklarationen möglich sein müsste, dieses Poblem zu lösen. Nur schaff ich es einfach nicht diesen Lösungsansatz für Templateklassen zu verwenden!

    //Annahme: TClassA kennt TClassB bereits per #include-Anweisung.
    //Nun muss ich ja TClassB noch TClassA bekannt geben!
    //Lieg ich mit folgendem Ansatz(der natürlich nicht funktioniert!) 
    //wenigstens näherungsweise richtig?
    
    //Beginn: TClassB.h
    
    #ifndef CLASS_B_H
    #define CLASS_B_H
    
    class TClassA;
    
    template<class T> class TClassB
    {
       public:
       TClassB();
       ~TClassB();
       void method(TClassA<T> *ptr);
    
       protected;
       //nix
    
       private:
       TClassA<T> *pointer;
    };
    
    //---------------------------------------------------------
    
    #include "TClassA.h"
    
    template<class T> TClassB<T>::TClassB(){}
    
    template<class T> TClassB<T>::~TClassB(){}
    
    template<class T> void TClassB<T>::method(TClassA<T> *ptr)
    {
       pointer=ptr;
    }
    
    #endif
    
    //Ende: TClassB.h
    

    Schon jetzt vielen Dank für eure Hilfe!

    Grüße,
    TS++



  • template <class T> class A;
    

    sowas?



  • Vielen Dank für die Antwort!

    Das ich da nicht selber drauf gekommen bin!? * KopfAufTastaturHau * 🙄

    Aber du weisst ja wie das ist:
    Erst wenn man direkt über einen solchen Fall stolpert, macht man sich darüber Gedanken!

    Danke!
    Grüße,
    TS++


Anmelden zum Antworten