编译器警告 C4867

“function”:函数调用缺少参数列表;请使用“call”创建指向成员的指针

指向成员函数的指针初始化不正确。

此警告可能来自于为 Visual Studio 2005 执行的编译器一致性工作:增强了指针到成员一致性。 使用 Visual Studio 2005 之前的版本编译的代码现在将生成 C4867。

此警告始终作为错误发出。 请使用 警告 杂注禁用此警告。 有关 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
   }
};