C ++: ошибка va_list: общий thunk-код завершается ошибкой для метода

0

Это мой класс:

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);       
}

И это ошибка компиляции:

ошибка: общий код thunk не работает для метода "virtual void ControlBoard :: print (const GFX_STRING &,...)", который использует "..."

Если метод "print()" не находится в моем интерфейсе ILCD, компиляция прекрасна. Но мне нужно добавить его, поэтому я не понимаю, почему эта ошибка появляется?

Большое спасибо !

  • 0
    изменить &string на *string
  • 0
    @bruno.karklisbruno.karklis: не влияет!
Показать ещё 1 комментарий
Теги:
variadic-functions

1 ответ

-2

Простой код c с va_list

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;
}
  • 0
    Да, но почему мой метод не может построить ??
  • 0
    Почему &string находится в void ControlBoard::print(const GFX_STRING &string, ...) а не *string ?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню