va_list permettrait de recuperer tous les elements passes a getElement1,
mais quelle syntaxe utiliser alors pour passer un nombre d'argument
dynamique a getElement2?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
olivier
Je pourrais m'en sortir avec un vector mais j'aimerais bien savoir si c'est tout de même faisable avec des arguments variables (je me rends compte que je devrais peut-être plutôt poster dans le forum C)
============ FIN ============= > va_list permettrait de recuperer tous les elements passes a getElement1, mais quelle syntaxe utiliser alors pour passer un nombre d'argument dynamique a getElement2?
Merci d'avance. Cordialement, Olivier.
Je pourrais m'en sortir avec un vector mais j'aimerais
bien savoir si c'est tout de même faisable avec des arguments variables
(je me rends compte que je devrais peut-être plutôt poster dans le forum C)
============ FIN ============= >
va_list permettrait de recuperer tous les elements passes a getElement1,
mais quelle syntaxe utiliser alors pour passer un nombre d'argument
dynamique a getElement2?
Je pourrais m'en sortir avec un vector mais j'aimerais bien savoir si c'est tout de même faisable avec des arguments variables (je me rends compte que je devrais peut-être plutôt poster dans le forum C)
============ FIN ============= > va_list permettrait de recuperer tous les elements passes a getElement1, mais quelle syntaxe utiliser alors pour passer un nombre d'argument dynamique a getElement2?
va_list permettrait de recuperer tous les elements passes a getElement1, mais quelle syntaxe utiliser alors pour passer un nombre d'argument dynamique a getElement2?
Je ne suis pas sûr quels paramètres exactement tu veux passer à getElement2. Si c'est getElement2 qui doit évaluer tous les paramètres dynamique, alors, tu peux lui passer le va_list, par exemple :
DOMNode* Parser::getElement1( std::string element, ... ) { // ... va_list ap ; va_start( ap, element ) ; getElement2( element, nodeCurrent, ap ) ; va_end( ap ) ; }
Si ce n'est qu'une partie de la liste qui t'intéresse, tu dois pouvoir passer un pointeur ou une référence au va_list à getElement2.
Fait gaffe, néaumoins. Le paramètre qui précède les ... ne peut pas être une référence. Ni un certain nombre d'autres choses (char, float, etc.). Et évidemment, les types qu'on peut utiliser dans la liste ... sont très limités.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
va_list permettrait de recuperer tous les elements passes a
getElement1, mais quelle syntaxe utiliser alors pour passer un
nombre d'argument dynamique a getElement2?
Je ne suis pas sûr quels paramètres exactement tu veux passer à
getElement2. Si c'est getElement2 qui doit évaluer tous les
paramètres dynamique, alors, tu peux lui passer le va_list, par
exemple :
DOMNode*
Parser::getElement1(
std::string element,
... )
{
// ...
va_list ap ;
va_start( ap, element ) ;
getElement2( element, nodeCurrent, ap ) ;
va_end( ap ) ;
}
Si ce n'est qu'une partie de la liste qui t'intéresse, tu dois
pouvoir passer un pointeur ou une référence au va_list à
getElement2.
Fait gaffe, néaumoins. Le paramètre qui précède les ... ne peut
pas être une référence. Ni un certain nombre d'autres choses
(char, float, etc.). Et évidemment, les types qu'on peut
utiliser dans la liste ... sont très limités.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
va_list permettrait de recuperer tous les elements passes a getElement1, mais quelle syntaxe utiliser alors pour passer un nombre d'argument dynamique a getElement2?
Je ne suis pas sûr quels paramètres exactement tu veux passer à getElement2. Si c'est getElement2 qui doit évaluer tous les paramètres dynamique, alors, tu peux lui passer le va_list, par exemple :
DOMNode* Parser::getElement1( std::string element, ... ) { // ... va_list ap ; va_start( ap, element ) ; getElement2( element, nodeCurrent, ap ) ; va_end( ap ) ; }
Si ce n'est qu'une partie de la liste qui t'intéresse, tu dois pouvoir passer un pointeur ou une référence au va_list à getElement2.
Fait gaffe, néaumoins. Le paramètre qui précède les ... ne peut pas être une référence. Ni un certain nombre d'autres choses (char, float, etc.). Et évidemment, les types qu'on peut utiliser dans la liste ... sont très limités.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
olivier
Merci pour ta réponse.
Même en passant: getElement2( element, nodeCurrent, ap )
Je suis plus ou moins bloqué car je passe alors des types string ou DOMNode dans ap, puis dans getElement2 je ne sais pas comment me positionner après (l'appel de va_arg(ap, DOMNode*) génère un core dump car il ne semble pas pouvoir gérer les classes).
Enfin bref, je me suis donc rabattu sur un vector<string> ap. L'utilisation est plus lourde mais au moins ca marche!
va_list permettrait de recuperer tous les elements passes a getElement1, mais quelle syntaxe utiliser alors pour passer un nombre d'argument dynamique a getElement2?
Je ne suis pas sûr quels paramètres exactement tu veux passer à getElement2. Si c'est getElement2 qui doit évaluer tous les paramètres dynamique, alors, tu peux lui passer le va_list, par exemple :
DOMNode* Parser::getElement1( std::string element, ... ) { // ... va_list ap ; va_start( ap, element ) ; getElement2( element, nodeCurrent, ap ) ; va_end( ap ) ; }
Si ce n'est qu'une partie de la liste qui t'intéresse, tu dois pouvoir passer un pointeur ou une référence au va_list à getElement2.
Fait gaffe, néaumoins. Le paramètre qui précède les ... ne peut pas être une référence. Ni un certain nombre d'autres choses (char, float, etc.). Et évidemment, les types qu'on peut utiliser dans la liste ... sont très limités.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Merci pour ta réponse.
Même en passant:
getElement2( element, nodeCurrent, ap )
Je suis plus ou moins bloqué car je passe alors des
types string ou DOMNode dans ap, puis dans getElement2
je ne sais pas comment me positionner après
(l'appel de va_arg(ap, DOMNode*) génère un core dump car
il ne semble pas pouvoir gérer les classes).
Enfin bref, je me suis donc rabattu sur un vector<string> ap.
L'utilisation est plus lourde mais au moins ca marche!
va_list permettrait de recuperer tous les elements passes a
getElement1, mais quelle syntaxe utiliser alors pour passer un
nombre d'argument dynamique a getElement2?
Je ne suis pas sûr quels paramètres exactement tu veux passer à
getElement2. Si c'est getElement2 qui doit évaluer tous les
paramètres dynamique, alors, tu peux lui passer le va_list, par
exemple :
DOMNode*
Parser::getElement1(
std::string element,
... )
{
// ...
va_list ap ;
va_start( ap, element ) ;
getElement2( element, nodeCurrent, ap ) ;
va_end( ap ) ;
}
Si ce n'est qu'une partie de la liste qui t'intéresse, tu dois
pouvoir passer un pointeur ou une référence au va_list à
getElement2.
Fait gaffe, néaumoins. Le paramètre qui précède les ... ne peut
pas être une référence. Ni un certain nombre d'autres choses
(char, float, etc.). Et évidemment, les types qu'on peut
utiliser dans la liste ... sont très limités.
--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Même en passant: getElement2( element, nodeCurrent, ap )
Je suis plus ou moins bloqué car je passe alors des types string ou DOMNode dans ap, puis dans getElement2 je ne sais pas comment me positionner après (l'appel de va_arg(ap, DOMNode*) génère un core dump car il ne semble pas pouvoir gérer les classes).
Enfin bref, je me suis donc rabattu sur un vector<string> ap. L'utilisation est plus lourde mais au moins ca marche!
va_list permettrait de recuperer tous les elements passes a getElement1, mais quelle syntaxe utiliser alors pour passer un nombre d'argument dynamique a getElement2?
Je ne suis pas sûr quels paramètres exactement tu veux passer à getElement2. Si c'est getElement2 qui doit évaluer tous les paramètres dynamique, alors, tu peux lui passer le va_list, par exemple :
DOMNode* Parser::getElement1( std::string element, ... ) { // ... va_list ap ; va_start( ap, element ) ; getElement2( element, nodeCurrent, ap ) ; va_end( ap ) ; }
Si ce n'est qu'une partie de la liste qui t'intéresse, tu dois pouvoir passer un pointeur ou une référence au va_list à getElement2.
Fait gaffe, néaumoins. Le paramètre qui précède les ... ne peut pas être une référence. Ni un certain nombre d'autres choses (char, float, etc.). Et évidemment, les types qu'on peut utiliser dans la liste ... sont très limités.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Horst Kraemer
olivier wrote:
Merci pour ta réponse.
Même en passant: getElement2( element, nodeCurrent, ap )
Je suis plus ou moins bloqué car je passe alors des types string ou DOMNode dans ap, puis dans getElement2 je ne sais pas comment me positionner après (l'appel de va_arg(ap, DOMNode*) génère un core dump car il ne semble pas pouvoir gérer les classes).
Ce n'est pas la faute du DOMNode* parce que des pointeurs sont toujours permis. C'est la faute des objets du type "string" parce que la classe "string" est une classe "non-POD".
-- Horst
-- Lâche pas la patate!
olivier <nospam@nospam.com> wrote:
Merci pour ta réponse.
Même en passant:
getElement2( element, nodeCurrent, ap )
Je suis plus ou moins bloqué car je passe alors des
types string ou DOMNode dans ap, puis dans getElement2
je ne sais pas comment me positionner après
(l'appel de va_arg(ap, DOMNode*) génère un core dump car
il ne semble pas pouvoir gérer les classes).
Ce n'est pas la faute du DOMNode* parce que des pointeurs sont
toujours permis. C'est la faute des objets du type "string" parce que
la classe "string" est une classe "non-POD".
Même en passant: getElement2( element, nodeCurrent, ap )
Je suis plus ou moins bloqué car je passe alors des types string ou DOMNode dans ap, puis dans getElement2 je ne sais pas comment me positionner après (l'appel de va_arg(ap, DOMNode*) génère un core dump car il ne semble pas pouvoir gérer les classes).
Ce n'est pas la faute du DOMNode* parce que des pointeurs sont toujours permis. C'est la faute des objets du type "string" parce que la classe "string" est une classe "non-POD".