假设我有这 3 个不同的功能,我可能想指出:
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 中的错误是灾难性的,无济于事。任何帮助,将不胜感激。