classe template avec pointeur membre sur la classe - C++ - Programmation
Marsh Posté le 11-01-2009 à 22:12:19
oui car B* est de type B<T,A> est non B<U,Z>.
Ton truc peut pas marcher comme ça.
Marsh Posté le 11-01-2009 à 22:25:14
what's a pity
Marsh Posté le 12-01-2009 à 00:08:15
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
Marsh Posté le 12-01-2009 à 10:18:52
quel est la bonne syntaxe :
Code :
|
Code :
|
Le compilateur me sort :
error C2988: impossible de reconnaître la définition/déclaration de modèle
Marsh Posté le 12-01-2009 à 11:17:18
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
Marsh Posté le 12-01-2009 à 11:19:16
t'inquiète je l'ai déjà lu de A à Z en diagonale
Marsh Posté le 12-01-2009 à 11:23:05
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.
Marsh Posté le 12-01-2009 à 12:20:04
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 <<
Marsh Posté le 12-01-2009 à 12:56:55
passer un vector comme paramètre à la fonction tu veux dire par exemple ? donc je laisse tomber les tuples ?
Marsh Posté le 12-01-2009 à 13:06:35
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.
Marsh Posté le 12-01-2009 à 13:15:45
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
Marsh Posté le 12-01-2009 à 13:18:35
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 ?
Marsh Posté le 12-01-2009 à 13:33:07
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
Marsh Posté le 12-01-2009 à 13:39:58
ok
Marsh Posté le 12-01-2009 à 13:58:02
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,...)
?
Marsh Posté le 12-01-2009 à 14:01:03
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
Marsh Posté le 12-01-2009 à 15:54:27
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: |
aujourd'hui non. demain oui.
Marsh Posté le 11-01-2009 à 22:00:16
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.
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.