C++ C++;:va_列表错误方法的通用thunk代码失败
这是我的班级:C++ C++;:va_列表错误方法的通用thunk代码失败,c++,variadic-functions,C++,Variadic Functions,这是我的班级: class ControlBoard : public ILCD { virtual void print(const GFX_STRING &string, ...); // ... 这是我的界面: class ILCD { virtual void print(const GFX_STRING &string, ...) = 0; // ... 这是我的方法: void ControlBoard::print(const
class ControlBoard : public ILCD
{
virtual void print(const GFX_STRING &string, ...);
// ...
这是我的界面:
class ILCD
{
virtual void print(const GFX_STRING &string, ...) = 0;
// ...
这是我的方法:
void ControlBoard::print(const GFX_STRING &string, ...)
{
va_list args;
va_start(args, string);
// ...
va_end(args);
}
这就是编译错误:
错误:使用“…”的方法“virtual void ControlBoard::print(const GFX_STRING&,…)”的通用thunk代码失败
如果方法“print()”不在我的ILCD接口中,编译就可以了。但是我需要添加它,所以我不明白为什么会出现这个错误
多谢各位 一个带有va_列表的简单c代码
int WriteLog ( const char *pszBuffer, ... )
{
FILE *fp;
int iRet = FAIL;
va_list vaListArguments = NULL;
fp = _tfopen( LOGPATH, "a" );
if( NULL == fp )
{
return FAIL;
}
if( NULL != pszBuffer )
{
va_start( vaListArguments, pszBuffer );
if( NULL != vaListArguments )
{
iRet = _vftprintf(fp, pszBuffer, vaListArguments);
if( 0 <= iRet )
{
_ftprintf( fp, " \n");
fflush( fp );
iRet = SUCCESS;
}
}
va_end(vaListArguments);
fclose( fp );
}
return iRet;
}
int WriteLog(const char*pszBuffer,…)
{
文件*fp;
int iRet=失败;
va_列表有效性Starguments=NULL;
fp=_tfopen(LOGPATH,“a”);
if(NULL==fp)
{
返回失败;
}
if(NULL!=pszBuffer)
{
va_start(vaListArguments、pszBuffer);
如果(NULL!=有效开始次数)
{
iRet=_vftprintf(fp、pszBuffer、vaListArguments);
如果(0将&string
更改为*string
@bruno.karklis:没有影响!虽然引用类型作为最后命名的参数确实是无效的,正如所指出的,但这里的问题是完全不同的。这只是一个例子,编译器的部分代码生成没有针对特定平台完全实现orm。快速搜索该错误消息将提供解释。编译器品牌(可能是GCC)、版本和平台将是帮助您获得可用解决方案的相关信息。是的,但为什么我的方法无法构建??为什么&string
位于void ControlBoard::print(const GFX_string&string,…)
而不是*string
?我尝试了使用*string,但出现了相同的编译错误!我修改了我的初始帖子。感谢您的帮助