我遇到以下一段代碼甚至無法編譯的問題。 問題是上線C++:函數指針和類成員
class2_ = new Class2(myFunction);
其實,我現在不如何引用myFunction的,我也嘗試過class2_ = new Class2(&Class3::myFunction);
但是編譯器仍然抱怨:(
2約束:
- 功能myFunction的不能被聲明爲static
- 此代碼將在一個Arduino的基礎項目中使用,我不能使用的boost ::綁定
你能幫我嗎?
感謝。
class Class2 {
typedef void(*MyFunction) (int what);
MyFunction fn_;
public:
Class2(MyFunction fn) : fn_(fn) {}
void invoke(int val) {
fn_(val);
}
};
class Class3 {
Class2* class2_;
public:
Class3() {
class2_ = new Class2(myFunction);
class2_->invoke(12);
}
void myFunction(int what) {
// Do some work
}
};
void test2() {
Class3 instance3;
}
你不能提供一個非靜態成員函數到一個非成員函數的預期,這是因爲成員函數有一個隱含的「這個」參數您在調用該函數時需要提供這些信息。 –
你的功能總是在課堂上嗎? – Netwave
你能夠使用C++ 11嗎? –