ошибка C3867: вызов функции отсутствует в списке аргументов - PullRequest
0 голосов
/ 22 сентября 2009

Я обновляю исходный код игрового движка с Visual Studio 2003 до Visual Studio 2008. Когда я пытаюсь скомпилировать исходный код, я получаю следующую ошибку.

ошибка C3867: «UObject :: StaticConstructor»: вызов функции отсутствует в списке аргументов; используйте '& UObject :: StaticConstructor', чтобы создать указатель на член

в следующем коде:

//----(IMPLEMENT_CLASS macro):
#define IMPLEMENT_CLASS(TClass) \
UClass TClass::PrivateStaticClass \
( \
    EC_NativeConstructor, \
    sizeof(TClass), \
    TClass::StaticClassFlags, \
    TClass::Super::StaticClass(), \
    TClass::WithinClass::StaticClass(), \
    FGuid(TClass::GUID1,TClass::GUID2,TClass::GUID3,TClass::GUID4), \
    TEXT(#TClass)+1, \
    GPackage, \
    StaticConfigName(), \
    RF_Public | RF_Standalone | RF_Transient | RF_Native, \
    (void(*)(void*))TClass::InternalConstructor, \
    (void(UObject::*)())TClass::StaticConstructor \ /* ERROR ON THIS LINE */
); \
extern "C" DLL_EXPORT UClass* autoclass##TClass;\
DLL_EXPORT UClass* autoclass##TClass = TClass::StaticClass();

Примечание. Этот фрагмент кода взят из http://www.experts -exchange.com / Программирование / Языки / CPP / Q_20756876.html (Нет необходимости говорить, что они абсолютно одинаковы)

Я не уверен, как мне переписать строку, чтобы не было ошибок.

(void(UObject::*)())TClass::StaticConstructor \

1 Ответ

4 голосов
/ 22 сентября 2009

В сообщении об ошибке сказано все: добавьте отсутствующий амперсанд.

(void(UObject::*)())&TClass::StaticConstructor \

Редактировать: Я бы также удалил приведение, которое либо не нужно, либо неправильно.

...