說我有可能要指向這3個不同的功能:使用的std ::函數作爲一個委託C++ 11
float test1(int a, int b) {
return 7.0f;
}
struct TestClass {
float test2(int a, int b) {
return 5.0f;
}
};
struct TestClass2 {
float test3(int a, int b) {
return 3.0f;
}
};
通知所有三個如何使用相同的參數和返回值。我想抽象出它是否是一個成員函數以及它屬於哪個類。我想要一個委託類型,它可能指向這三個函數中的任何一個,這僅取決於它的初始化方式。
這是我第一次嘗試:
typedef std::function<float(int, int)> MyDelegate; // is this right?
int main() {
TestClass obj;
TestClass2 obj2;
MyDelegate a = test1;
MyDelegate b = std::bind(std::mem_fn(&TestClass::test2), obj); // is this right?
MyDelegate c = std::bind(std::mem_fn(&TestClass2::test3), obj2); // is this right?
return 0;
}
的想法是我想還可以存儲在包裝內this指針了。這樣一來,它就像一個功能齊全的delegate.For例如,調用「B(X,Y)」應該是這樣調用obj.test2(x, y)
。
我甚至不能讓它編譯,我可能沒有完全抓住了這個。我對這些庫很陌生,VS2012中的錯誤是災難性的無用的。任何幫助,將不勝感激。
的可能重複的[C++ 11個風格的回調?](http://stackoverflow.com/questions/12338695/c11-styled-callbacks) – Klaim