컴파일러 경고 C4867
업데이트: 2007년 11월
오류 메시지
'function': 함수 호출에 인수 목록이 없습니다. 'call'을(를) 사용하여 멤버에 대한 포인터를 만드십시오.
'function': function call missing argument list; use 'call' to create a pointer to member
멤버 함수를 가리키는 포인터가 잘못 초기화되었습니다.
이 경고는 Visual C++ 2005에 대해 수행된 즉, 포인터와 멤버 사이의 규칙이 강화되었다는 컴파일 규칙에 따라 발생할 수 있습니다. Visual C++ 2005 이전에는 정상적으로 컴파일되던 코드도 이제 C4867을 발생시킬 수 있습니다. 자세한 내용은 Visual C++ 2005 컴파일러의 주요 변경 사항을 참조하십시오.
이 경고는 항상 오류로서 발생합니다. 이 경고를 비활성화하려면 warning pragma를 사용하십시오. 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
}
};