来自第三方代码库,我收到错误:
错误140错误:指向绑定函数的指针只能用于调用函数
导致该错误的函数:
/** Static name of function to call */
static FName GetAddComponentFunctionName()
{
static const FName AddComponentFunctionName(GET_FUNCTION_NAME_CHECKED(AActor, AddComponent));
return AddComponentFunctionName;
}
// Returns FName(TEXT("FunctionName")), while statically verifying that the function exists in ClassName
// &((ClassName*)0)->FunctionName will generate 'error: cannot create a non-constant pointer to member function' on the Mac
#if PLATFORM_WINDOWS
#define GET_FUNCTION_NAME_CHECKED(ClassName, FunctionName) \
((void)sizeof(&((ClassName*)0)->FunctionName), FName(TEXT(#FunctionName)))
#else
#define GET_FUNCTION_NAME_CHECKED(ClassName, FunctionName) \
FName(TEXT(#FunctionName))
#endif
同样,这段代码用VS编译,但不用intel的icl
编译答案 0 :(得分:3)
MyObject->MyFunc
不能用于除立即函数调用之外的任何事情。即使某些编译器允许,您甚至无法使用sizeof
。我想你的意思是sizeof(&ClassName::FunctionName)
。这样更简单,实际上会编译,并且不会调用未定义的行为(取消引用空指针就是UB,即使你不对取消引用的结果做任何事情)。