【发布时间】:2016-01-17 10:39:40
【问题描述】:
以下代码有效:
float value = 3.0f;
auto f = std::bind(&MyClass::doSomething, this, value);
f();
但是,一旦我尝试将函数存储在 std::vector 中,它就不允许我调用该函数:
float value = 3.0f;
auto f = std::bind(&MyClass::doSomething, this, value);
std::vector<std::function<void(float)> > list;
list.push_back(f);
list.back()();
这是编译器错误:
No matching function for call to object of type 'value_type' (aka 'std::__1::function<void (float)>'). Candidate function not viable: requires 1 argument, but 0 were provided.
我已经有一段时间没有被这样难住了。如果我尝试将 lambda 绑定到浮点值而不是使用成员函数,则会出现同样的问题。
【问题讨论】:
-
请稍稍回过头来告诉我们目标。我认为您从错误的角度解决了这个问题。有一个更简单的解决方案
-
嗯,第一个没有
std::function参与?第二个在最后一行代码之前有一个错误,并且该错误不需要涉及vector。检查std::function<void(float)> f2 = f;我猜MyClass::doSomething不需要两个浮点数? -
请发帖MCVE
标签: c++ function c++11 vector bind