template et interface+héritage

template et interface+héritage - C++ - Programmation

Marsh Posté le 01-03-2010 à 20:30:21    

Code :
  1. struct IA{};
  2. struct Child:IA{};
  3. template<class T> struct User{};
  4. struct User2
  5. {
  6. void f(User<IA>& us){}
  7. };
  8. void main()
  9. {
  10. User<Child> us;
  11. User2().f(us);
  12. }


 
La partie en gras peut accepter un objet de type User<child> ou non?


---------------
.
Reply

Marsh Posté le 01-03-2010 à 20:30:21   

Reply

Marsh Posté le 01-03-2010 à 20:34:46    

y a pas moyen d'y arriver ?


---------------
.
Reply

Marsh Posté le 01-03-2010 à 21:22:27    

tu attend un User<T>& et voila

Reply

Marsh Posté le 01-03-2010 à 21:32:29    

en faite j'ai mal formulé le problème
 

Code :
  1. class Bar:public foo
  2. {
  3. User<XXX> * owner; // quoi mettre ici
  4. template<class T>
  5. void setOwner(User<T>* o)
  6. {
  7. owner=o;
  8. }
  9. };


Message édité par Glock 17Pro le 01-03-2010 à 21:43:29

---------------
.
Reply

Marsh Posté le 02-03-2010 à 00:25:30    


mait ce que tu veut ... un vrai type/class ( pas 'class T' )
et compile!
 
 :hello:

Reply

Marsh Posté le 02-03-2010 à 07:43:57    

oui mais j'aurais voulu en paramètre de la fonction setowner une classe User qui puisse accepter en paramètre template n'importe quelle implémentation d'une interface


Message édité par Glock 17Pro le 02-03-2010 à 07:47:25

---------------
.
Reply

Marsh Posté le 02-03-2010 à 08:32:53    

Il faut faire du Type Erasure: http://codepad.org/VVjGIDQL

Reply

Marsh Posté le 02-03-2010 à 08:42:29    

ok je vais regarder ça ty


---------------
.
Reply

Marsh Posté le 02-03-2010 à 23:02:07    

nickel


---------------
.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed