Ошибка C3646: «Закрытие»: неизвестный спецификатор переопределения

StackOverflow https://stackoverflow.com/questions/4426944

  •  09-10-2019
  •  | 
  •  

Вопрос

Я получил следующую ошибку:

error C3646: 'closure' : unknown override specifier

Код:

void BaseOperator::mousebutton_cb(EventObject* sender, EventArgs* calldata, void* closure)
{
    xd3D::Operation::Operator::BaseOperator* operator = (xd3D::Operation::Operator::BaseOperator*)closure;
    MouseButtonEventArgs* e = (MouseButtonEventArgs*)calldata;
    if (e->Status == Down)
        operator->OnMouseButtonDown(e);
    else
        operator->OnMouseButtonUp(e);
}

Вы знаете, почему у меня есть эта ошибка?

Это было полезно?

Решение

operator это ключевое слово. Последовательность operator = пытается объявить оператор присваивания, который в вашем случае будет иметь тип параметра указателя. И ваш компилятор хочет проанализировать самый последний closure как специальный спецификатор, как override (AFAIK расширение MSVC), const или такой.

Переименуйте переменную к чему-то еще, как myoperator.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top