あるメンバ関数から別のメンバ関数に値で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;
}