2013-06-28 2 views
0

C++의 다른 함수에 대한 함수 포인터를 만들려고합니다. ,C++ 함수 포인터 정의

.\MyExtender.cpp(132) : error C2440: 'initializing' : cannot convert from 
'LONG (__thiscall CWilExtender::*)(LPSTR,LPVIPERVAR4,LONG)' to 
'LONG (__cdecl *)(LPSTR,LPVIPERVAR4,LONG)' 
     There is no context in which this conversion is possible 

나는 DllVarHandler이 정의 된 방법을 모른다 : 내 프로그램을 컴파일 할 때

LONG (*function)(LPSTR,LPVIPERVAR4,LONG)=&CWilExtender::DllVarHandler; 

, 나는이 오류가 :

이것은 내가 지금까지 무엇을 가지고 함수 포인터의 형식을 재현하는 방법을 모르겠습니다.

(_cdecl *)(__thisscall CWilExtender::*)과 어떻게 변경합니까?

특히, LONG (__thiscall CWilExtender::*)(LPSTR,LPVIPERVAR4,LONG)의 의미는 무엇이며 어떻게 함수 포인터의 유형으로 작성합니까?

감사합니다.

+3

가능한 복제본 [C++ Function member pointer] (http://stackoverflow.com/questions/17304659/c-function-member-pointer) –

+1

해당 오류 메시지가 예상하는 유형을 알려줍니다. – tadman

+0

C++에서 가상 메서드를 사용할 수 있으므로 읽기 쉽고이 문제를 피할 수있는 코드를 작성할 수 있습니다. 대신에 인터페이스를 사용하십시오. –

답변

0

@OliCharlesworth 및 @ user814628 님의 의견 덕분에 문제가 해결되었습니다.

올바른 코드가 있어야한다 : 도움을 너무 빨리 것에 대한

LONG (CWilExtender::* function)(LPSTR,LPVIPERVAR4,LONG)=&CWilExtender::DllVarHandler; 

감사합니다!