编译器警告 C4867

更新:2007 年 11 月

错误消息

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

错误地初始化了指向成员函数的指针。

为 Visual C++ 2005 进行的编译器一致性工作可能导致此警告:增强的指向成员的指针的一致性。现在,在 Visual C++ 2005 前编译的代码将生成 C4867。有关更多信息,请参见 Visual C++ 2005 编译器中的重大更改

此警告始终按错误发出。使用 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
   }
};