Bonjour,

Je suis actuellement entrains de développer un projet en C++, et tente évidemment d'être le plus générique possible.
Le principe général du module concerné est de permettre de segmenter des images.

J'utilise ici les templates pour permettre d'utiliser le même code quelque soit le nombre de dimensions de l'image (1D Gray ou 3D RGB/HUV...).
J'ai donc une classe template Spliter<T> qui défini les bases d'un objet se chargeant de segmenter l'image, et j'ai défini avec des typedef le nombre de de dimensions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
template < typename T > 
class Spliter
{
     private:
          Image * _image;
     public:
        Spliter (Image *image) 
                 :_image(image){};
};	
 
typedef Spliter<double> Spliter1D;
Cela fonctionne bien. Maintenant je veux pouvoir hériter des "typedef" définis précédemment pour implémenter mes techniques de segmentation.
Voici un exemple avec une classe Test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
class Test : public Spliter1D
{
public:
	Test(Image *image)
              : Spliter1D(image){};
	virtual ~Test();
};
A la compilation j'obtiens une référence indéfinie vers le constructeur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
Test.o: In function `Test':
****/segmentation/Test.cpp:7: undefined reference to `Spliter<double>::Spliter(Region*)'
Il me semble qu'en C++ les templates ne sont pas compilées comme les classes standards, donc je comprend bien la référence indéfinie. Mais n'y a t'il pas un moyen de faire fonctionner mon système ?

En vous remerciant d'avance,
Nico