2013-06-28 56 views
0

我想在C++中創建一個函數指針指向另一個函數。C++定義函數指針

這是我到目前爲止有:

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

當我嘗試編譯我的程序,我得到這個錯誤:

.\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是如何定義的,我不知道如何重現函數指針的類型。

如何更改(_cdecl *)以匹配(__thisscall CWilExtender::*)

具體來說,LONG (__thiscall CWilExtender::*)(LPSTR,LPVIPERVAR4,LONG)是什麼意思,我該如何寫這個函數指針的類型?

謝謝。

+3

[C++函數成員指針]的可能的重複(http://stackoverflow.com/questions/17304659/c-function-member-pointer) –

+1

該錯誤消息告訴你它期望的是什麼類型。 – tadman

+0

在C++中,您可以使用虛擬方法,因此可以編寫易於閱讀的代碼並避免此問題。改爲使用和接口。 –

回答

0

感謝@OliCharlesworth和@ user814628的評論,我解決了我的問題。

正確的代碼應該是:

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

感謝這麼快幫!