Je le code suivant:Arguement Variable Avec Référence de la classe Comme 1er paramètre
#include <cstdarg>
#include <iostream>
using namespace std;
class a {
};
void fun1(a& aa, ...)
{
va_list argp;
va_start(argp, aa);
char *p = 0;
while ((p = va_arg(argp, char *)) != 0) {
cout << p << endl;
}
va_end(argp);
}
void fun2(char *aa, ...)
{
va_list argp;
va_start(argp, aa);
char *p = 0;
while ((p = va_arg(argp, char *)) != 0) {
cout << p << endl;
}
va_end(argp);
}
int main()
{
cout << "fun2" << endl;
fun2("a", "1", "2", (char *)0);
cout << "fun1" << endl;
fun1(a(), "1", "2", (char *)0);
getchar();
}
Tout fonctionne bien avec fun2. Cependant, fun1 va juste planter. Puis-je savoir comment empêcher l'écrasement tout en utilisant la référence de classe en tant que 1er paramètre?
Actuellement, il imprime:
fun2
1
2
fun1
puis crash.
Je souhaite
fun2
1
2
fun1
1
2
Comment pensez-vous que varArgs travailler? –
S'il vous plaît se référer à ma mise à jour. –
vous avez dit que vous avoir dans un commentaire, donc je le prends y Vous ne pouvez pas passer à gcc? Alternativement, vous pouvez compiler du code dans une DLL et l'appeler en msvc mais je déteste cette option. –