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,但出现了相同的编译错误!我修改了我的初始帖子。感谢您的帮助