Bonjour à tous,

Je me pose une petite question existentielle !
Est-ce que le fait d'avoir une classe template avec des fonctions virtuelles ajoutent trop de contraintes au client...

Exemple avec cette class Camera:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <typename T>
class Camera {
public:
	typedef typename T value_type; //Accès au type depuis l'extérieur
	typedef typename vigra::BasicImage<T> image; //Accès au type depuis l'extérieur
 
	Camera(std::string nomCamera);
	virtual ~Camera() {}
	Camera (const & Camera); // On interdit la copie
 
	virtual image LoadImageByNumber(int number) = 0;
	virtual image LoadImageByTime(double time);
 
protected:
	double m_Tech; // Période d'échantillonnage de la caméra
	const std::string m_NomCamera;
};
Le client devra désormais utiliser le polymorphisme, non pas par un simple pointeur Camera *, mais bien par un Camera<T> * ....

Celà représente t-il une contrainte forte ? Trop forte?
Ce que je veux dire par là c'est que l'introduction d'un template est pour moi une souplesse de plus pour un changement éventuel pour la suite... Si c'est vraiment super chiant pour les appelants (il vont devoir tout templater en fait dans l'IHM), alors je laisse tomber...

d'éclaicir ma lanterne !