Ellipse, comment ça fonctionne?
Bonjour à tous,
je me retrouve avec un problème à résoudre, et j'ai bien peur que la solution la plus élégante pour le faire soit l'utilisation d'une ellipse.
Cependant, j'ai du mal avec cette étrange chose. Voici ma fonction:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| #include <string>
#include <iostream>
using namespace std;
// cette fonction est censé prendre une nombre quelconque de string en paramètre et les afficher
void Write(std::string args, ...)
{
string str;
va_list vl;
str=args;
va_start(vl,args);
do {
cout << str;
str=va_arg(vl, string);
} while (!str.empty());
va_end(vl);
cout << endl;
} |
Lorsque je tente d'utiliser ma fonction ainsi:
Code:
1 2 3 4 5 6
| int main(int argc, char* argv[])
{
Write(string("toto"), string("titi"), string("tata"));
return 0;
} |
Le programme plante à la dernière itération de la boucle do/while dans la fonction Write(), à la ligne:
Code:
str=va_arg(vl, string);
Le débugger m'amène dans le fichier memcpy.asm à la ligne
Citation:
rep movsd ;N - move all of our dwords
avec le message d'erreur suivant:
Citation:
Unhandled exception at 0x10231f1a (msvcr80d.dll) in Test1.exe: 0xC0000005: Access violation reading location 0x0a5cf99c.
Avez-vous une idée de ce qui cloche?