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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
str=va_arg(vl, string);
Le débugger m'amène dans le fichier memcpy.asm à la ligne
rep movsd ;N - move all of our dwords
avec le message d'erreur suivant:
Unhandled exception at 0x10231f1a (msvcr80d.dll) in Test1.exe: 0xC0000005: Access violation reading location 0x0a5cf99c.
Avez-vous une idée de ce qui cloche?