Bekomme Fehlermeldung(template): ‘BinTree<T>::leftNode’ has incomplete type



  • Guten Abend allerseits,
    ich will mir eine Templateklasse aufbauen, welche einen rekursiv aufgebauten Binärbaum darstellt(als Übungszweck) und bekomme leider folgende Fehlermeldungen:

    ../src/BinTree.h: In instantiation of ‘BinTree<int>’:
    ../src/main.cpp:13: instantiated from here
    ../src/BinTree.h:15: error: ‘BinTree<T>::leftNode’ has incomplete type
    ../src/BinTree.h:11: error: declaration of ‘class BinTree<int>’
    ../src/BinTree.h:16: error: ‘BinTree<T>::rightNode’ has incomplete type
    ../src/BinTree.h:11: error: declaration of ‘class BinTree<int>’

    bei dieser Definition:

    template<class T> class BinTree {
    private:
    	T value;
    
    	BinTree<T> leftNode; //<-FEHLER
    	BinTree<T> rightNode; //<-FEHLER
    public:
    	/* Konstruktor */
    	BinTree();
    	BinTree(T v);
    	BinTree(BinTree<T> &leftNode, BinTree<T> &rightNode, T v);
    
    	/* Destruktor */
    	virtual ~BinTree();
    
    	/* Getter-Methoden */
    	BinTree<T> getLeftNode()const;
    	BinTree<T> getRightNode()const;
    	T getValue()const;
    
    	/* Setter-Methoden */
    	void setLeftNode(BinTree<T> &left);
    	void setRightNode(BinTree<T> &right);
    	void setValue(T v);
    };
    

    in der MainFunktion will ich das ganze so aufrufen:

    //Wurzel
    	BinTree<int> a(10);
    
    	//Äste von 'a'
    	BinTree<int> b(20);
    	BinTree<int> c(30);
    
    	//Äste von 'b'
    	BinTree<int> d(40);
    	BinTree<int> e(50);
    
    	a.setLeftNode(b);
    	a.setRightNode(c);
    
    	b.setLeftNode(d);
    	b.setRightNode(e);
    

    Ich suche jetzt schon seit fast einer Stunde hab aber keine Ahnung wie ich das löse



  • Naja, die Fehlermeldung sagts ja eigentlich 😉 Der Typ von leftNode ist bei der Definition noch nicht vollständig. Was soll der Compiler denn da anlegen? ein BinTree-Objekt? Das beinhaltet wiederum einen leftNode-Member etc... ne Endlosschleife also :p Mach nen Zeiger draus.


Anmelden zum Antworten