我想弄清楚這個第三方軟件註冊回調的語法。我認爲這可能是一個基本問題,我只是不太熟悉C++。他們有一個註冊回調函數的方法,以便他們的代碼可以在事件發生時在我的代碼中調用函數。他們提供的記錄來自主文件回調工作的例子,但我想知道怎麼做了一個類的內部工作時在一個類中的C++回調語法
他們的方法簽名:
smHTRegisterHeadPoseCallback(smEngineHandle engine_handle, void *user_data, smHTHeadPoseCallback callback_fun);
從主文件工作示例:
void STDCALL receiveHeadPose(void *,smEngineHeadPoseData head_pose, smCameraVideoFrame video_frame)
{
...
}
void main()
{
...
smHTRegisterHeadPoseCallback(engine_handle,0,receiveHeadPose)
...
}
但我想用這個從我的類
MyClass.h
個class FaceEngine
{
public:
void STDCALL receiveFaceData(void *, smEngineFaceData face_data, smCameraVideoFrame video_frame);
...
MyClass.cpp
void FaceEngine::Start(void)
{
rc = smHTRegisterFaceDataCallback(hFaceAPIEngine,0,&FaceEngine::receiveFaceData);
...
結果在此編譯器錯誤:
Error 1 error C2664: 'smHTRegisterFaceDataCallback' : cannot convert parameter 3 from 'void (__stdcall FaceEngine::*)(void *,smEngineFaceData,smCameraVideoFrame)' to 'smHTFaceDataCallback' d:\stuff\programming\visual studio 2008\projects\tut02_vertices\faceengine.cpp 43 Beard
如果我的問題是不明確的,請讓我知道我可以澄清。
「smHTFaceDataCallback」的聲明是什麼樣的? 錯誤消息是說你沒有正確地調用smHTRegisterFaceDataCallback ... – Cogwheel 2010-06-17 02:11:45