我正在将游戏引擎的源代码从 Visual Studio 2003 升级到 Visual Studio 2008。当我尝试编译源代码时出现以下错误。
error C3867: 'UObject::StaticConstructor': function call missing argument list; use '&UObject::StaticConstructor' to create a pointer to member
在下面的代码中:
//----(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/Programming/Languages/CPP/Q_20756876.html (不用说他们完全一样)
我不确定应该如何重写该行才不会出现错误。
(void(UObject::*)())TClass::StaticConstructor \
最佳答案
错误消息说明了一切:添加缺少的符号。
(void(UObject::*)())&TClass::StaticConstructor \
编辑:我还会删除强制转换,这是不必要的或错误的。
关于c++ - 错误 C3867 : function call missing argument list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1459039/