template template parameters

template template parameters - C++ - Programmation

Marsh Posté le 10-01-2009 à 18:15:34    

Bonjour,
 
J'ai un problème avec le code suivant  
 

Code :
  1. #include <vector>
  2. #include<string>
  3. template<typename T,template <typename,typename> class A>
  4. struct B
  5. {
  6. A<T,std::allocator<T> > m;
  7. void ajouter(const T & val ) const
  8. {
  9.  A<T,std::allocator<T> >::const_iterator it;
  10.  it = m.begin();
  11.                ++it;
  12.  m.insert(it,val);
  13. }
  14. };
  15. int main(int, char *[])
  16. {
  17. B< std::string , std::vector > b;
  18. b.ajouter("oh non!" );
  19. }


 
le compilo me renvoit un message d'erreur concernant la ligne m.insert(it,val) :
 

1>  error C2663: 'std::vector<_Ty,_Ax>::insert' : 2 surcharges n'ont pas de conversion autorisée pour le pointeur 'this'

 
need help , merci


Message édité par frenchtoucco le 10-01-2009 à 18:43:12

---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
Reply

Marsh Posté le 10-01-2009 à 18:15:34   

Reply

Marsh Posté le 10-01-2009 à 18:59:02    

tu appelles insert qui modifie m dans une methode const qui justement nest censée ne pas avoir d'effet sur les membres d ela dites classe.

Reply

Marsh Posté le 10-01-2009 à 19:00:48    

Code :
  1. #include <vector>
  2. #include<string>
  3. template<typename T,template <typename,typename> class A>
  4. struct B
  5. {
  6.   A<T,std::allocator<T> > m;
  7.   void ajouter(const T & val )
  8.   {
  9.     typename A<T,std::allocator<T> >::iterator it;
  10.     it = m.begin();
  11.     ++it;
  12.     m.insert(it,val);
  13.   }
  14. };
  15. int main(int, char *[])
  16. {
  17.   B<std::string, std::vector> b;
  18.   b.ajouter("oh non!" );
  19. }


 
Il te manque un typename et pour faire un insert, il ne faut pas être const bien sur.

Reply

Marsh Posté le 10-01-2009 à 19:01:46    

Joel F a écrit :

tu appelles insert qui modifie m dans une methode const qui justement nest censée ne pas avoir d'effet sur les membres d ela dites classe.


Bon ben vu que t'es là, je peux retourner jouer à WoW.

Reply

Marsh Posté le 10-01-2009 à 19:10:36    

whaou quel boulet! effectivement j'ai fait n'imp avec les const, donc sans ça ça marche, cool.
 
@Taz: pour le typename, ça marche sans, tu me dis ça car c'est la "norme" qui préconise de le mettre ou quoi ?


Message édité par frenchtoucco le 10-01-2009 à 19:11:20

---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
Reply

Marsh Posté le 10-01-2009 à 19:15:46    

Taz a écrit :


Bon ben vu que t'es là, je peux retourner jouer à WoW.


 
C'est bon je gère :o
 
Le typename est obligatoire ar sinon le compilo peut pas deviner que c'est un type.  
C'est visual qui dit n'importe quoi pour changer.

Reply

Marsh Posté le 10-01-2009 à 19:19:58    

a ok , je note


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
Reply

Sujets relatifs:

Leave a Replay

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