Source einbinden will nicht :(
-
Ersteinmal Hallo! Schönes Board!
Zu meiner Frage:
Ich habe folgende Dateien:
classdef.h
classdec.cpp
testproject.cppclassdef.h:
template <class T> class Test { public: void SetData(T *theObject); T *GetData(); private: T *myData; };classdec.cpp
#include "classdef.h" template <class T> void Test<T>::SetData(T *theObject) { myData=theObject; } template <class T> T *Test<T>::GetData() { return myData; }testproject.cpp
#include <iostream> #include <cstdlib> #include "classdef.h" using namespace std; class Data { public: Data(int Var); int getData(); private: int myData; }; int main(int argc, char *argv[]) { Data *t=new Data(4); Test<Data> Klasse; Klasse.SetData(t); cout <<Klasse.GetData(); // cout << "Hello, world!" << endl; return EXIT_SUCCESS; }Wenn ich es jetzt make ausführe sagt er mir folgendes:
(makefile mit automake erstellt durch kdevelop)make all-recursive
make[1]: Gehe in Verzeichnis »/home/chriss/testproject«
Making all in src
make[2]: Gehe in Verzeichnis »/home/chriss/testproject/src«
g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -c testproject.cpp
In Datei, eingefügt von testproject.cpp:9:
classdef.h:9:3: Warnung: Kein Newline am Dateiende
g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -c classdek.cpp
In Datei, eingefügt von classdek.cpp:1:
classdef.h:9:3: Warnung: Kein Newline am Dateiende
classdek.cpp:13:2: Warnung: Kein Newline am Dateiende
/bin/sh ../libtool --mode=link g++ -g -O2 -o testproject testproject.o classdek.o
mkdir .libs
g++ -g -O2 -o testproject testproject.o classdek.o
testproject.o: In functionmain': /home/chriss/testproject/src/testproject.cpp:21: undefined reference toData::Data(int)'
/home/chriss/testproject/src/testproject.cpp:23: undefined reference toTest<Data>::SetData(Data*)' /home/chriss/testproject/src/testproject.cpp:24: undefined reference toTest<Data>::GetData()'
collect2: ld returned 1 exit status
make[2]: *** [testproject] Fehler 1
make[2]: Verlasse Verzeichnis »/home/chriss/testproject/src«
make[1]: *** [all-recursive] Fehler 1
make[1]: Verlasse Verzeichnis »/home/cmake all-recursive
make[1]: Gehe in Verzeichnis »/home/chriss/testproject«
Making all in src
make[2]: Gehe in Verzeichnis »/home/chriss/testproject/src«
g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -c testproject.cpp
In Datei, eingefügt von testproject.cpp:9:
classdef.h:9:3: Warnung: Kein Newline am Dateiende
g++ -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -c classdek.cpp
In Datei, eingefügt von classdek.cpp:1:
classdef.h:9:3: Warnung: Kein Newline am Dateiende
classdek.cpp:13:2: Warnung: Kein Newline am Dateiende
/bin/sh ../libtool --mode=link g++ -g -O2 -o testproject testproject.o classdek.o
mkdir .libs
g++ -g -O2 -o testproject testproject.o classdek.o
testproject.o: In functionmain': /home/chriss/testproject/src/testproject.cpp:21: undefined reference toData::Data(int)'
/home/chriss/testproject/src/testproject.cpp:23: undefined reference toTest<Data>::SetData(Data*)' /home/chriss/testproject/src/testproject.cpp:24: undefined reference toTest<Data>::GetData()'
collect2: ld returned 1 exit status
make[2]: *** [testproject] Fehler 1
make[2]: Verlasse Verzeichnis »/home/chriss/testproject/src«
make[1]: *** [all-recursive] Fehler 1
make[1]: Verlasse Verzeichnis »/home/chriss/testproject«
make: *** [all-recursive-am] Fehler 2
hriss/testproject«
make: *** [all-recursive-am] Fehler 2Stören tut mich das undefined reference. Dies ist zwar nicht mein Originalprojekt aber vom Prinzip her ist es das was ich nicht hinbekomme. Sources korrekt einbinden.
Danke für die Hilfe
-
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html
Bitte zu erst suchen, dieses Problem ist wirklich sehr geläufig.Außerdem existiert keine Implementierung für Data::Data (int).
-
Also erstmal entschuldigung! Habe gesucht aber wirklich nichts gefunden. Suchanfrage:
Source einbinden
templates einbinden
hatte nichts gebracht deshalb meine Frage. Nochmals entschuldigung. Und Respekt für die schnelle antwortzeit auf diesem Board.