Bonjour à tous
Il est tard et donc il se peut que ma question soit très simple.. mais j'en doute quand meme un peu :-)
j'ai une classe abstraite d'Instrument
une classe Portefeuille
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 class Instrument{ //pure virtual //.... };
une classe Operation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Portfolio{ protected: std::list<boost::shared_ptr<Instrument> list_; //..... };
des classes templates dérivées
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 class Operation{ //pure virtual virtual void applyTo(Portfolio* p, date d) = 0; //.... };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <class T> class SOperation: public Operation{ //..... void applyTo(Portfolio* p, date d); };
et une classe stgy qui consiste en gros à uneliste d'Operations et qui utilise entre autres deux méthodes
c'est dans cette derniere que se situe le noeud de mon problème
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 class Stgy{ //virtual std::list<boost::shared_ptr<Operation> > listOp_; void Stgy::applyTo(Portfolio* p, date d){ //... this->buildListOperation(p, ref); foreach(boost::shared_ptr<Operation> op, listOp_) op->applyTo(p, ref); } double Stgy::buildListOperation(Portfolio* p, date d){ //..... for (Portfolio::iterator it= p->begin(); it!= p->end(); ++it) addOperation(boost::shared_ptr<Operation>(new SOperation<typeid(it)>(d)); }
POur chaque element de mon portefeuille je veux rajouter une operation de type SOperation (donc template) avec pour argument de template le type de l'element du portefeuille (càd l'element de la liste polymorphique)..
Je sais qu'avec typeid on sait recuperer le type d'un element polymphq, mais ce que je ne sais pas c'est comment passer ce type comme argument d'un template...
Si qqun voit...
Tks
David
Partager