OVH Cloud OVH Cloud

Instantiation dynamique de type

2 réponses
Avatar
vincent daanen
Bonjour a tous,

sous ce nom pompeux se cache ceci, qui ne fonctionne pas (compilateur
msvc 6.0)

soit
une classe DicomFile
une classe B abstraite et template : DicomImage<PixelType> : public
DicomFile

puis 3 classes derivées de B
MriImage: public DicomImage<WORD>
CtImage: public DicomImage<WORD>
UsImage: public DicomImage<BYTE>

ce que je souhaite faire, c'est instancie de maniere dynamique le type
d'image en fonction d'un parametre :

DicomImage <T> *pDcmIma; //(1)

if (image est de type IRM)
pDcmIma = new MriImage();
else if (image est de type CT)
pDcmIma = new CtImage();
else if (image est de type Us)
pDcmIma = new UsImage();
else ... // gestion de l'erreur

puis recuperer des infos sur l'image via pDcmIma.

Le pb c'est que la ligne (1) n'est pas accepte par mon compilo , ce que
je concois bien.

Y'a t il un moyen de faire ca ou faut-il que je trouve une autre solution ?

merci de votre aide

Vincent

2 réponses

Avatar
Jean-Marc Bourguet
vincent daanen writes:

Y'a t il un moyen de faire ca ou faut-il que je trouve une autre solution ?


Tu veux un comportement polymorphe, donc il te faut une classe de base
commune. Ici tu a DicomFile; si l'interface de DicomFile ne te suffit
pas, il faut ajouter un niveau d'heritage en plus (ou completer
DicomFile, je n'ai pas assez d'information pour savoir ce qui est le
mieux).

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
vincent daanen
Bonjour,

c'est ce que je pressentais, j'en voulais confirmation.

Merci

Vincent

vincent daanen writes:


Y'a t il un moyen de faire ca ou faut-il que je trouve une autre solution ?



Tu veux un comportement polymorphe, donc il te faut une classe de base
commune. Ici tu a DicomFile; si l'interface de DicomFile ne te suffit
pas, il faut ajouter un niveau d'heritage en plus (ou completer
DicomFile, je n'ai pas assez d'information pour savoir ce qui est le
mieux).

A+