Bonjour,
je voudrais compiler un simple programme en c++, mais je m'y perd dans la gestion des fichiers.
Voici un exemple simplifié:
J'ai 3 fichiers:
main.cpp
Code :
- #include <iostream>
- #include <stdlib.h>
- #include "test.h"
- using namespace std;
- int main(int argc, char *argv[])
- {
- Test<int> a;
- a.brol();
- system("PAUSE" );
- return 0;
- }
|
puis test.h
Code :
- #ifndef _TEST_H
- #define _TEST_H
- template<class A>
- class Test
- {
- private:
- A pwet;
- public:
- void brol();
- };
- #endif
|
puis test.cpp:
Code :
- #include "test.h"
- template<class A>
- void Test<A>::brol()
- {
- pwet = 0;
- }
|
Et j'obtiens a la compil:
Compilateur: Default compiler
Building Makefile: "C:\Dev-Cpp\Makefile.win"
Exécution de make clean
rm -f main.o test.o Projet1.exe
g++.exe -c main.cpp -o main.o
g++.exe -c test.cpp -o test.o
g++.exe main.o test.o -o "Projet1.exe" -L"C:/map/Dev-Cpp/lib" main.o(.text+0x1b):main.cpp: undefined reference to `Test<int>::brol(void)'
make.exe: *** [Projet1.exe] Error 1
Exécution terminée |
Or, si j'utilise pas de template, ca marche, et si je fais include "test.cpp" dans main.cpp ca marche aussi, comment suis je sensé procédé pour que ca soit valide?
merci d'avance
Message édité par Nico5779 le 16-11-2004 à 20:34:46