编译器警告 C4867
“function”: 函数调用缺少参数列表;使用“call”创建指向成员的指针
错误地初始化了指向成员函数的指针。
为 Visual C++ 2005 执行的编译器一致性工作可能导致此警告:增强的指向成员的指针的一致性。 现在,在 Visual C++ 2005 前编译的代码将生成 C4867。
此警告始终按错误发出。 使用 warning 杂注可禁用此警告。 有关 C4867 和 MFC/ATL 的更多信息,请参见 _ATL_ENABLE_PTM_WARNING。
示例
下面的示例生成 C4867。
// C4867.cpp
// compile with: /c
class A {
public:
void f(int) {}
typedef void (A::*TAmtd)(int);
struct B {
TAmtd p;
};
void g() {
B b = {f}; // C4867
B b2 = {&A::f}; // OK
}
};