コンパイラの警告 C4867

更新 : 2007 年 11 月

エラー メッセージ

'関数': 関数呼び出しには引数リストがありません。メンバへのポインタを作成するために '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
   }
};