0
#include<iostream>
class Bar;
class Foo{
public:
void (Bar::*callback)(void);
Bar* bar;
Foo(Bar* bar, void (Bar::*cb)(void)){
callback = cb;
}
void execute(){
(bar->*callback); // commenting out this will make it compile
// i want to execute callback here, but can't find a way to do it
}
};
class Bar{
public:
Foo *f;
Bar(){
f = new Foo(this, &Bar::func);
f->execute();
}
void func(){ // this can't be static
std::cout << "func executed" << std::endl;
}
};
int main(){
Bar b;
return 0;
}
這就是我想要做的,我需要做一個回調例如一個按鈕。 但我不能調用成員函數指針。成員函數的C++回調
還是另一種方式,我應該用它來獲得此功能?
編輯:我得到的錯誤是「非法使用非靜態成員函數」 使函數靜態不是一個選項。
您需要的std ::功能 –
你得到一個錯誤?它是什麼? – 0x499602D2