RECHERCHER :
COMMUNAUTE MP
Identifiez vous ...
Devenir Membre
J'ai oublié mon MDP
DOMAINE MP
Bavardages
Langages Généraux
Langages Web
Langages DotNet
Autres langages
Dev. Jeux Video
Sécurité
Sys. Exploitation
Graphismes
Logiciels
Réseaux
Bases de données
Méthodologies
Emplois High-tech
Aide juridique
Articles juridiques
FORUM
Index des forums
Ajouter un sujet
Rechercher sujet
Contact Responsable
Devenir modérateur
CHAT MP IRC
Votre pseudo ...
Serv: irc.irc-land.org
Chan: #MoteurProg
PARTICIPER
Plus de 3500 emplois.
Rechercher un job
Déposez votre CV
Emplois High-tech

Visiteur MP

 Fonction à nombre variable de paramètres

Forum : C++
Sous Catégorie : Aucune
Type du sujet : Sujet Normale
FAQ : FAQ C++

SUIVI DES SUJETS PAR MAIL

SUIVI PAR MAIL INACTIF

RESOLUTION DU SUJET SUJET NON RESOLU
BLOQUAGE DU SUJET SUJET ACTIF
APPARTENANCE A LA FAQ N'APPARTIENT PAS A LA FAQ


PAGE : [1]

POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

FORUM C++

PREMIERE PAGE

PAGE PRECEDENTE

Page précedente

Page suivante

PAGE SUIVANTE

DERNIERE PAGE
zouzoulikou
Nouveau membre
Inscrit : 20/07/2007
Messages : 1
Message
#138823
Posté le 20/07/07 à 16:58
Bonjour.
Je souhaite utiliser une fonction avec un nombre variable de paramètres, et ces derniers doivent être des classes. Je sais que, lorsqu'il fautr passer des classes en paramètres, il faut les déclarer comme étant des const MaClasse &.
Je déclare donc dans le fichier .h une fonction comme ceci :
void MaClasse::MaFonction(const MaClasseX & m1, ...);

Dans le code de la fonction, je fais :

void MaClasse::MaFonction(const MaClasseX & m1, ...)
{
va_list varg;
va_start(varg, m1);

while (...)
{
...
MaClasseX mptr = va_arg(varg, const CComBSTR &); // j'ai une erreur à ce niveau
...
}


Smiley J'ai cherché un peu sur Google, mais je n'arrive pas à trouver. Quelqu'un a t'-il déja eu ce problème ?
Merci

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

Publicité
Inscrit : X
Messages : X
Message
#Aucun

HAUT DE PAGE

  

vortex666
Modérateur :
- C & C++
- OpenGL
- Delphi
Chef de projet(s) :
- Vortez3DEngine

Avatar de vortex666
Inscrit : 20/09/2004
Messages : 483
Message
#138844
Posté le 20/07/07 à 19:46
Tu pourrais te faire un vecteur de MaClasseX comme ceci

#include <vector>
using namespace std;

vector<MaClasseX> vClassX;

...

Pour ajouter un object:

vClassX.push_back(/*Object de type MaClassX*/);

Pour savoir comment d'object il y a dans le vector:

int VectorSize = vClassX.size();


Un vector est comme une array dynamique, donc tu peut lui ajouter le nb d'élément que tu veut.

Bonne chance!

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 

popol
Membre actif
Avatar de popol
Inscrit : 17/10/2006
Messages : 125
Message
#138970
Posté le 23/07/07 à 10:45
J'ai eu le même problème, va_arg étant une fonction en C, je crains qu'elle n'accepte pas les classes. moi pour contourner ce problème j'avais passé en paramètre le pointeur vers la classe, et va_arg récupèrait ce pointeur en pointeur générique:
void *pointeur=va_arg(varg,void *);
et j'utilisait:
MaClasseX mptr = static_cast <const CComBSTR &> (pointeur)

Mais static_castest très lent, il prend 0.5 millisecondes je crois.
Tu peut peut-être le remplacer (pas sûr):

MaClasseX mptr = static_cast <const CComBSTR &> (pointeur)

par:

MaClasseX mptr = (const CComBSTR &) (pointeur)

Ce que j'ai écrit a peut-être des erreurs mais c'est à peu près comme cela que tu peut contourner le problème tout en gardant va_arg

Mais sinon tu peut utliser les vectors de la STL comme te disait vortex666 ce qui est plus simple et plus rapide.
__________________________
n'hesitez pas à visiter Mon site et surtout Mon Tutorial C

HAUT DE PAGE

PROFIL MEMBRE LUI ECRIRE 
POSTER UN NOUVEAU SUJET REPONDRE A CE SUJET

PREMIERE PAGE

PAGE PRECEDENTE Page précédente

Page suivante

PAGE SUIVANTE DERNIERE PAGE

FORUM C++



    PAGE : [1]



.: Site Web développé par Julien Pichot et l'équipe MPWG avec www.evolvia-web.com :.