使用泛型STD:在一个类中具有成员函数的函数对象对于一个类,我想在一个类中存储一些指向同一个类的成员函数的函数指针。map贮存std::function物品。但我在一开始就失败了,这段代码是:class Foo {
public:
void doSomething() {}
void bindFunction() {
// ERROR
std::function<void(void)> f = &Foo::doSomething;
}};我收到error C2064: term does not evaluate to a function taking 0 arguments在……里面xxcallobj结合一些奇怪的模板实例化错误。目前,我在Windows 8上使用VisualStudio 2010/2011,在Win 7上使用VS 10,它也失败了。错误必须基于一些我不遵循的奇怪的C+规则。编辑:我知道不用助推。这是集成在MS编译器中的C+11。
3 回答
holdtom
TA贡献1805条经验 获得超10个赞
std::function
<void(void)>
std::function<void(void)> f = std::bind(&Foo::doSomething, this);
using namespace std::placeholders;std::function<void(int,int)> f = std::bind(&Foo::doSomethingArgs, this, _1, _2);
std::function<void(int,int)> f = [=](int a, int b) { this->doSomethingArgs(a, b);}
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
std::function<void(Foo*)> f = &Foo::doSomething;
this
std::function<void(void)> f = std::bind(&Foo::doSomething, this);
烙印99
TA贡献1829条经验 获得超13个赞
class MyClass{public: void MemberFunc(int value) { //do something }};// Store member function bindingauto callable = std::mem_fn(&MyClass::MemberFunc); // Call with late supplied 'this'MyClass myInst;callable(&myInst, 123);
std::_Mem_fn_wrap<void,void (__cdecl TestA::*)(int),TestA,int> callable
std::function<void(int)> binding = std::bind(callable, &testA, std::placeholders::_1);binding(123); // Call
- 3 回答
- 0 关注
- 351 浏览
添加回答
举报
0/150
提交
取消