undefined reference to - Problem



  • Hi,

    wie aus dem Titel schon hervorgeht, habe ich ein Problem beim Compilieren mit irgendwelchen Referenzen, welches ich nicht alleine schaffe zu lösen.

    Main.cpp

    #include "Deque.h"
    
    int main(void)
    {  
        Deque<int>deq(100);
        return 0;   
    
    }
    

    Deque.h (nur wichtige Sachen)

    #ifndef _DEQUE_H_
    
    #define _DEQUE_H_
    
    template <class T> class Deque 
    {
    
     public:
    
    	Deque(const int c = 2);
    
    	~Deque(void);
    
    private:
    
    	T* myDeque;
    
    };
    

    Deque.cpp (nur wichtige Sachen)

    #include <iostream>
    
    #include "Deque.h"
    
        //Ctor
    
    	template <class T> Deque<T>::Deque(const int c)
    	{ 
    
             myDeque = new T[capacity = c];
    
    	}
    
    //Dtor
    
    	template <class T> Deque<T>::~Deque(void)
    	{
    
    	     //Speicher freigeben
    
    	     delete []myDeque;    
    
    	}
    

    Der Fehler:

    xyz@debian-server:~/Desktop/alg$ gcc -o Main Main.cpp Deque.cpp
    /tmp/ccuiYAbK.o: In function `main':Main.cpp:(.text+0x2c): undefined reference to `Deque<int>::Deque(int)'
    :Main.cpp:(.text+0x3c): undefined reference to Deque<int>::~Deque()' /tmp/ccuiYAbK.o:(.eh\_frame+0x11): undefined reference to__gxx_personality_v0'
    /tmp/ccKgtN6b.o: In function \_\_tcf\_0':Deque.cpp:(.text+0xe): undefined reference tostd::ios_base::Init::~Init()'
    /tmp/ccKgtN6b.o: In function \_\_static\_initialization\_and\_destruction\_0(int, int)':Deque.cpp:(.text+0x37): undefined reference tostd::ios_base::Init::Init()'
    /tmp/ccKgtN6b.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
    collect2: ld gab 1 als Ende-Status zurück
    xyz@debian-server:~/Desktop/alg$

    Was muss ich noch machen, damit mein Main funktioniert? Es gibt kein weiteres Main innerhalb der Deque etc. Füge ich aber in die Deque ein main ein, kann ich die Deque von dort wunderbar nutzen. Ich verstehe jetzt nur nicht, wieso meine Deque aus dem Main nicht bekannt ist.

    Danke!

    VG



  • Templateimplementierungen müssen in die Headerdateien.



  • Hi,

    danke. Ich versuche mal mein Glück.

    VG


Anmelden zum Antworten