Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1213 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  classe template avec pointeur membre sur la classe

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

classe template avec pointeur membre sur la classe

n°1836682
frenchtouc​co
Posté le 11-01-2009 à 22:00:16  profilanswer
 

bonjour,
 
J'ai un problème avec le code suivant.
 
Cette classe template, a un pointeur sur la classe elle même, mais avec des paramètres template différent, le problème est que je ne  
parviens pas à initialiser correctement cette variable.
 

Code :
  1. template<typename T,template <typename,typename> class A>
  2. struct B
  3. {
  4. typedef A<T,std::allocator<T> > container;
  5. typedef const T constdata_type;
  6. typedef typename container::const_iterator constIterator;
  7. template<typename U,template <typename,typename> class Z>
  8. void InitBstar()
  9. {
  10.  b = new B<U,Z>();
  11. }
  12. B(void);
  13. void print() const;
  14. template<typename U>
  15. void inserer(const U &first,...);
  16. private:
  17. container m_;
  18. B * b;
  19. template<typename U>
  20. void ajouter(const U& val);
  21. };


 
Le compilateur ne veut pas de cette ligne : b = new B<U,Z>();
 
error C2440: '=' : impossible de convertir de 'B<T,A> *' en 'B<T,A> *'
 
Quelqu'un voit le problème ?
 
Merci


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
mood
Publicité
Posté le 11-01-2009 à 22:00:16  profilanswer
 

n°1836684
Joel F
Real men use unique_ptr
Posté le 11-01-2009 à 22:12:19  profilanswer
 

oui car B* est de type B<T,A> est non B<U,Z>.
Ton truc peut pas marcher comme ça.

n°1836685
frenchtouc​co
Posté le 11-01-2009 à 22:25:14  profilanswer
 

what's a pity


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836694
Joel F
Real men use unique_ptr
Posté le 11-01-2009 à 23:02:49  profilanswer
 

tu veut faire quoi là ???

n°1836709
frenchtouc​co
Posté le 12-01-2009 à 00:08:15  profilanswer
 

un truc générique de ce style :
 
 B< vector<string> , vector > b;
 b.inserer<string,vector>("une", "phrase ", "!" );
 
mais j'ai pas besoin finalement d'avoir un B* en fonction membre, par contre maintenant je suis embété avec le va_arg et le template apparement c'est pas trop compatible


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836735
Joel F
Real men use unique_ptr
Posté le 12-01-2009 à 08:10:15  profilanswer
 

le va-arg est unsafe en C++. Utilise boost::tuple

n°1836763
frenchtouc​co
Posté le 12-01-2009 à 10:18:52  profilanswer
 

quel est la bonne syntaxe :
 
 

Code :
  1. template<typename T,template <typename,typename> class A>
  2. struct B
  3. {
  4. template<typename U,template <typename,typename> class Z>
  5. void inserer(boost::tuples::tuple& my_tuple);
  6. };


 

Code :
  1. template<typename T,template <typename,typename> class A>
  2. template<typename U,template <typename,typename> class A2>
  3. void B<T,A>::inserer(boost::tuples::tuple& my_tuple)
  4. {
  5. }


 
Le compilateur me sort :
error C2988: impossible de reconnaître la définition/déclaration de modèle
 


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836776
Joel F
Real men use unique_ptr
Posté le 12-01-2009 à 11:17:18  profilanswer
 

un tuple en général, ca contient des objets de types A0,..,An
donc : tuple<A0,A1>
 
Lire la doc me parait pas mal.
 
http://www.boost.org/doc/libs/1_37 [...] guide.html

n°1836780
frenchtouc​co
Posté le 12-01-2009 à 11:19:16  profilanswer
 

t'inquiète je l'ai déjà lu de A à Z en diagonale


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836783
frenchtouc​co
Posté le 12-01-2009 à 11:23:05  profilanswer
 

j'ai besoin d'une fonction qui puisse prendre un nombre variable d'arguments, si c'est pas possible d'utiliser un tuple "dynamique" comme argument d'une fonction c'est pas ce qu'il me faut.


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
mood
Publicité
Posté le 12-01-2009 à 11:23:05  profilanswer
 

n°1836814
Taz
bisounours-codeur
Posté le 12-01-2009 à 12:20:04  profilanswer
 

frenchtoucco a écrit :

j'ai besoin d'une fonction qui puisse prendre un nombre variable d'arguments, si c'est pas possible d'utiliser un tuple "dynamique" comme argument d'une fonction c'est pas ce qu'il me faut.

Si c'est le même type ça va, tu contournes avec un conteneur/tableau ou bien une surcharge <<  

n°1836838
frenchtouc​co
Posté le 12-01-2009 à 12:56:55  profilanswer
 

passer un vector comme paramètre à la fonction tu veux dire par exemple ? donc je laisse tomber les tuples ?


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836845
Taz
bisounours-codeur
Posté le 12-01-2009 à 13:06:35  profilanswer
 

frenchtoucco a écrit :

passer un vector comme paramètre à la fonction tu veux dire par exemple ? donc je laisse tomber les tuples ?


tuple = taille N statique / connue à la compilation + N types.


Message édité par Taz le 12-01-2009 à 13:07:18
n°1836853
frenchtouc​co
Posté le 12-01-2009 à 13:15:45  profilanswer
 

mais je vois pas quelle syntaxe adopter pour créer une fonction prenant comme argument un tuple possédant un nombre de paramètres non connue à la compilation


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836856
frenchtouc​co
Posté le 12-01-2009 à 13:18:35  profilanswer
 

tu voulais me dire d'utiliser, un tuple avec un certains nombres de paramèrtres connue à la compilation et de rajouter un paramètre vector ?


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836867
Joel F
Real men use unique_ptr
Posté le 12-01-2009 à 13:33:07  profilanswer
 

si tu as juste besoin d'une fonction à nb de param variables et tous de meme type : vector
si tu as besoin d'un nb fixe de param de type différent : tuple
si tu as besoin d'un nb variable de param de type different : vector de variant + visiteur associés

n°1836872
frenchtouc​co
Posté le 12-01-2009 à 13:39:58  profilanswer
 

ok


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836892
frenchtouc​co
Posté le 12-01-2009 à 13:58:02  profilanswer
 

donc y a pas de solution équivalente à va_arg en C++ infiné ?par équivalente j'entends une solution qui permette d'apoter la même syntaxe:
 
f(int,int,int...)
f(string,string,...)
 
?


---------------
je connais tout, je ne sais rien, seule certitude, à vouloir trop on finit par tout perdre.
n°1836894
theshockwa​ve
I work at a firm named Koslow
Posté le 12-01-2009 à 14:01:03  profilanswer
 

pas à ma connaissance, mais les tuple et initializer lists résoudront ce genre de problème assez facilement dans un avenir que l'on espère proche
 
Edit : tout ce qui te manque, c'est juste l'initializer list, d'ailleurs, si tu tiens à ce que tous tes arguments soient du même type ... ensuite, vector fait bien l'affaire comme l'a souligné Joel


Message édité par theshockwave le 12-01-2009 à 14:02:57

---------------
last.fm
n°1836938
Taz
bisounours-codeur
Posté le 12-01-2009 à 15:54:27  profilanswer
 

frenchtoucco a écrit :

donc y a pas de solution équivalente à va_arg en C++ infiné ?par équivalente j'entends une solution qui permette d'apoter la même syntaxe:
 
f(int,int,int...)
f(string,string,...)
 
?


aujourd'hui non. demain oui.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  classe template avec pointeur membre sur la classe

 

Sujets relatifs
template template parameterstemplate syntaxe
Problème objet/classeAppel d'une méthode dans une classe avec href....
précision: template et inlineSérialisation de la classe parente.
virtual dans une classe filleinstanciation de classe impossible c++/cli
Diagramme de classeGénération de classe CS à partir d'un XSD
Plus de sujets relatifs à : classe template avec pointeur membre sur la classe


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR