J'essaie d'utiliser l'opérateur "..." mais se ennuis:Obtenir des déchets lors de l'utilisation opérateur ...
void Func(int diff, CTester* pcTester, int params ...)
{
va_list ap;
va_start(ap, params);
for(int i = 0; i < params; i++) {
int val = va_arg(ap, int);
cout << "[" << i << "] = " << val << "\n";
if (diff > val) {
// some logic
}
}
va_end(ap);
}
J'appelle Func ainsi:
Func(1359, pcTester, 10, 20, 30, 40);
Je me attends à voir dans la console les impressions de [0] = 10 [1] = 20 [2] = 30 [3] = 40 Mais je reçois trop de copies:
[0] = 20
[1] = 30
[2] = 40
[3] = 4197568
[4] = 26221600
[5] = 0
[6] = 4196640
[7] = 4197568
[8] = 1152895024
[9] = 0
Comme vous pouvez le voir j'ai e 10 imprime (au lieu de 4) et la première valeur (10) ne figure pas dans la liste
Qu'est-ce que je fais de mal?
Vous ne 'pour int i = 0; je
Le '...' dans votre code n'est pas un opérateur (un opérateur opère sur d'autres expressions pour produire une autre expression, par exemple ' + 'peut fonctionner sur' 2' et '3' pour donner' 5'). Le '...' fait en fait partie de la syntaxe pour une liste de paramètres de fonction qui indique qu'il y aura des arguments non-prototypés à suivre –