如何將類成員函數傳遞給非類成員函數的參數?我收到以下編譯錯誤:在非類成員函數的參數中傳遞類成員函數
error: argument of type ‘void (MyNamespace::MyClass::)(int*)’ does not match ‘void (*)(int*)’
Library.h
typedef void (*testCallback)(int* iParam);
void UsingTheFoo(testCallback Callback);
Library.cpp
void UsingTheFoo(testCallback Callback)
{
int *p_int = new int;
*p_int = 5;
Callback(p_int);
}
MyClass.cpp
namespace MyNamespace
{
void MyClass::fooCB(int* a)
{
printf("hey! %d\n", *a);
}
void MyClass::testo()
{
UsingTheFoo(fooCB);
}
} // MyNamespace
我不能更改「庫」中的代碼,我需要在MyClass成員函數中使用「UsingTheFoo」。我知道我的方式是錯誤的,我搜索了一下,發現了類似的問題,但無法理解(轉換結束時的braindead :))其中任何一個都完全適應我的問題。
我已經閱讀:http://www.parashift.com/c++-faq-lite/pointers-to-members.html:S
使其成爲靜態的,就這麼簡單。謝謝,我應該採取更多的剎車:) – bmkorkut 2012-04-12 22:04:09