Linker Error



  • Hi, ich habe da ein Problem beim Linken 😞
    Bin noch 'n Anfänger und probiere gerade was mit templates
    Hab Borland C++ Compiler 5.5

    Das ist der Quelltext

    //test0003.h
    
    template<class T1,class T2,class T3,class T4,class T5> class Beschreibung
    {
    	private:
    		T1 b1; T2 b2; T3 b3; T4 b4; T5 b5;
    	public:
    		Beschreibung() {}
    		void init(T1 _b1,T2 _b2,T3 _b3,T4 _b4,T5 _b5);
    		void zeige(void);
    };
    
    //test0003.cpp
    #include<iostream>
    #include"test0003.h"
    using namespace std;
    
    template<class T1,class T2,class T3,class T4,class T5> void Beschreibung<T1,T2,T3,T4,T5>::init(T1 _b1,T2 _b2,T3 _b3,T4 _b4,T5 _b5)
    {
    	b1=_b1; b2=_b2; b3=_b3; b4=_b4; b5=_b5;
    }
    
    template<class T1,class T2,class T3,class T4,class T5> void Beschreibung<T1,T2,T3,T4,T5>::zeige(void)
    {
    	cout<<b1<<'\n'<<b2<<'\n'<<b3<<'\n'<<b4<<'\n'<<b5<<endl;
    }
    
    //test0003test.cpp
    #include<iostream>
    #include"test0003.h"
    using namespace std;
    
    int main()
    {
    	Beschreibung<char *,char *,int,bool,float> G11;
    	Beschreibung<char *,char *,int,bool,float> G15;
    	G11.init("Logitech G11","Schwarz",96,true,59.95F);
    	G15.init("Logitech G15","Silber",108,false,79.95F);
    	G11.zeige();
    	G15.zeige();
    	return(0);
    }
    

    Kommandozeile: bcc32 test0003test.cpp test0003.cpp

    Bekomme Fehlermeldung:
    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    test0003test.cpp:
    test0003.cpp:
    Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
    Error: Unresolved external 'Beschreibung<char *, char *, int, bool, float>::init(char *, char *, int, bool, float)' referenced from C:\K\K\TEST0003TEST.OBJ
    Error: Unresolved external 'Beschreibung<char *, char *, int, bool, float>::zeige()' referenced from C:\K\K\TEST0003TEST.OBJ

    Prozess beendet mit Exit-Code 1

    Kann mir jemand helfen?



  • Hast du schon mal in den FAQ nachgeschaut? 😡



  • Kurzfassung: Template-Funktionen mußt du im Header definieren (der Compiler braucht Definition UND Instanziierung, um etwas anlegen zu können - export wird bisher kaum unterstützt).


Anmelden zum Antworten