Поделиться через


Предупреждение компилятора C4867

"function": отсутствующий список аргументов вызова функции; используйте "call" для создания указателя на член

Указатель на функцию-член был инициализирован неправильно.

Это предупреждение можно создать в результате работы соответствия компилятора, которая была выполнена для Visual Studio 2005: улучшенная соответствие указателя к члену. Код, скомпилированный до Visual Studio 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
   }
};