Vererbung von Template Klassen



  • Hallo,

    ich habe eine Template Klasse von der ich eine Klasse ableite.
    In der Basisklasse hab ich ein Struct definiert, welches ich im Kind verwenden möchte.

    Krieg es aber einfach nicht hin 😞

    Hier der Code:

    template <class T>
    class basisKlasse {
    public:
    
        basisKlasse() {
        }
    
        basisKlasse(const basisKlasse& orig) {
        }
    
        virtual ~basisKlasse() {
        }
    protected:
        struct basisStruct {
            T test;
        };
    };
    
    #include "basisKlasse.h"
    #include <iostream>
    
    using namespace std;
    
    template <class T>
    class tolleKlasse : public basisKlasse<T> {
    public:
        tolleKlasse() {
        }
    
        tolleKlasse(const tolleKlasse& orig) {
        }
    
        virtual ~tolleKlasse() {
        }
    
        void print() {
            cout << this->myStruct.test;
        }
    
        void setValue(T value) {
           this->myStruct.test = value;
        }
    private:
        basisKlasse<T>::basisStruct myStruct;
    
    };
    

    Fehler:
    In file included from main.cpp:9:
    tolleKlasse.h:36: error: expected ;' before "myStruct" tolleKlasse.h: In member functionvoid tolleKlasse<T>::setValue(T) [with T = int]':
    main.cpp:17: instantiated from here
    tolleKlasse.h:33: error: 'class tolleKlasse<int>' has no member named 'myStruct'
    tolleKlasse.h: In member function void tolleKlasse<T>::print() [with T = int]': main.cpp:18: instantiated from here tolleKlasse.h:29: error: 'class tolleKlasse<int>' has no member named 'myStruct' make[2]: Leaving directory/cygdrive/c/Users/Manuel/Documents/NetBeansProjects/vererbung'
    make[1]: Leaving directory `/cygdrive/c/Users/Manuel/Documents/NetBeansProjects/vererbung'



  • typename basisKlasse<T>::basisStruct myStruct;



  • arghonaut schrieb:

    typename basisKlasse<T>::basisStruct myStruct;

    Funktioniert 🙂

    Vielen Dank


Anmelden zum Antworten