c++ - 错误 C3867 : function call missing argument list

标签 c++ visual-studio-2008 macros

我正在将游戏引擎的源代码从 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/

相关文章:

android - 如何在 Android 设备上直接将简单的 C++ 程序作为可执行文件运行?

c++ - 在将指针传递给函数后,如何向下转换指针?

c# - 在 64 位机器上以 32 位模式运行 Oracle Client

c# - 用于单元测试的 Global.asax?

c++ - 为什么 C++ 标准要求编译器忽略对基本类型的转换运算符的调用?

c++ - 线程池应该如何在C中实现?

c# - 在 Visual Studio .NET 中创建主页

c - 解析 C 头文件以确定所有定义的宏

c++ - 从字符串变量参数调用#include 宏的函数?

rust - 如何编写一个转发到 vec 的可变 Rust 宏!宏?