當通過值將va_list參數從一個成員函數傳遞到另一個成員函數時,出現訪問衝突錯誤(使用Microsoft Visual C++ 2005)。如果我通過引用傳遞所有內容,但是va_list不應該通過引用傳遞,是嗎?按值傳遞va_list時出現訪問衝突
class A
{
public:
char * getformatted(char const * a_format, ...)
{
va_list argp;
va_start(argp, a_format);
char * result = getformatted(a_format, argp);
va_end(argp);
return result;
}
char * getformatted(char const * a_format, va_list /*&*/ a_args)
{
static char buffer[ 256 ];
int length = vsprintf(buffer, a_format, a_args); // Access violation.
return buffer;
}
};
int main(int argc, char * argv[])
{
char * str = A().getformatted("foo%s", "bar");
return 0;
}