ouf, c'était pour cela ma méthode :lol:.
En faite en premier lieux, je pense qu'il te manque une class parente pour utiliser le polymorphisme. Aprés y as plein de manière differente, a toi de voir laquel tu prefere :D
Version imprimable
Mais j'ai déjà une classe parente (cf pièce jointe : diagramme UML avant de rajouter les template)
C'est d'ailleurs avec elle que je gérai tout par pointeur... Maintenant avec les template je peux plus...
Je vais étudier ta solution... Il faut que je pousse mon raisonnement plus loin... ;)
EDIT : ton exemple marche car ta classe mère est non virtuelle. Or j'ai plein de cas à gérer alors dans mon cas a priori il faudrait qu'elle soit virtuelle aussi...
Tu pourrai ajouter une class interface (virtuel pure par exemple) entre les deux.
Le plus dure est d'avoir une interface cohérente et suffisante pour être utilisé par polymorphisme,qui fait totalement abstraction du type de ta template.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 class camera { //fonction et variable commune a toute les camera } //class intermediaire qui donne l'interface de ta class template class camera_virtuelle_interface : public camera { public : //fonction et variable commune a toute les camera virtuelle. exemple: virtual Setposition(float * p) = 0; virtual Initialisation(..) =0; virtual OpenFile(std::string fileName) =0; . . . } template< class T> class camera_virtuelle : public camera_virtuelle_interface { //implémentation des fonctions de l'interface //plus les fonction et variable lié au type T }
Juste une question, tu fait du lancer de rayon? de la simulation? ou c'est pour interfacer des camera?
La diagramme que tu viens de voir est un gestionnaire de caméra. Effectivement, les caméras sont réelles et implantées dans un système complexe expérimental. (à part la caméra virtuelle que j'ai créer pour simuler une vraie caméra à partir d'un fichier issu d'un enregistrement d'une vraie caméra)
Mon boulot est de récupérer ces données et de faire des traitements physiques dessus. ;)
Toute tes camera fournissent des image en int ou float ou char ou... et sont template ?
Dans ce cas la, peut être qu'il faudrait plutôt que tes camera ne soit pas template, mais unique la class image?
Si seul camera_virtuelle est template, cette class semble incoherente avec les autre :?
Hum... Tu me fais me poser de bonnes questions, et tu as raison.
Les caméras que je gère sont des caméras entre 10 et 14 bits... Donc la structure que j'avais initialement retenue était UInt16, évidemment.
Sauf qu'est arrivé de nouveaux besoins pour les physiciens (affichage en nombre de photons et autre), ainsi les valeurs des images après traitement atteignent 10^21... ET moi je stocke dans ma classe une image (courante) en UInt16.
Comme tu viens de le souligner, il serait effectivement bon de découpler traitement et acquisition de données... Quitte à mettre template une seule fonction membre de la classe Camera (getImage en l'occurence)
Merci pour tes questions intéressées et intéressantes mongaulois