Computer(IT)/Visual Studio C++

함수 호출에 인수 목록이 없습니다.(컴파일러 오류 C3867)

약탄치킨 2008. 10. 2. 20:11
반응형
'func': 함수 호출에 인수 목록이 없습니다. '&func'을(를) 사용하여 멤버에 대한 포인터를 만드십시오.
'func': function call missing argument list; use '&func' to create a pointer to member

해당 클래스 이름과 주소 연산자를 사용하여 멤버 함수를 한정하지 않은 채 멤버 함수의 주소를 사용하려고 했습니다.

이 오류는 Visual C++ 2005에 대해 수행된 즉, 포인터와 멤버 사이의 규칙이 강화되었다는 컴파일 규칙에 따라 발생할 수도 있습니다. Visual C++ 2005 이전 버전으로 컴파일한 코드에서 C3867이 발생할 수 있습니다. 자세한 내용은 Visual C++ 2005 컴파일러의 주요 변경 사항을 참조하십시오.


 - 컴파일러의 템플릿 처리 변경사항, 맴버사이의 규칙 강화로 생긴 문제점
 - 함수 포인터 전달시에 확인!

#include<stdio.h>

struct S {
   char *func() {
      return "message";
   }
};

class X {
public:
   void f() {}
};

int main() {
   X::f;   // C3867

   // OK
   X * myX = new X;
   myX->f();

   S s;
   printf_s("test %s", s.func);   // C3867
   printf_s("test %s", s.func());   // OK
}

반응형