假设我有这三种不同的功能,我可能想指出:
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’指针.这样,它就像一个功能齐全的委托.例如,调用’b(x,y)’应该像调用obj.test2(x,y).
我甚至无法编译它,我可能还没有完全掌握它.我对这些库有点新意,VS2012中的错误是灾难性的无益的.任何帮助,将不胜感激.