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


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

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

Недопустимая инициализация указателя на функцию-член.

Это предупреждение может отображаться в результате выполнения действий по обеспечению расширенной совместимости указателей на члены в Visual C++ 2005. В текущей версии при компиляции кода, который не содержал ошибок в версиях, предшествующих Visual C++ 2005, возникает предупреждение C4867.

Это предупреждение всегда выдается как ошибка. Чтобы отключить это предупреждение, используйте директиву pragma 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
   }
};