【发布时间】:2017-07-09 19:22:36
【问题描述】:
我有一个类Foo,其中包含vector 的Bars:
class Foo
{
public:
void create();
void callback();
std::vector<Bar> mBars;
}
我的Bar 类包含这个构造函数:
class Bar
{
Bar(const int x, const int y, std::function<void()> &callback);
}
我的Foo 类有一个create() 方法,它将Bars 添加到mBars 向量中:
void Foo::create()
{
mBars.push_back({ 1224, 26, callback }); //ERROR!
}
如何使用std::function 设置函数指针?并且还没有在向量中创建单独的对象和push_back?就像上面的那行,我得到了错误:
E0304 no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=CV::Button, _Alloc=std::allocator<Bar>]" matches the argument list
【问题讨论】:
-
您没有获取函数的指针。另外对于
std::function,您必须使用std::bind。 -
顺便说一句,您可能想查看
vector::emplace_back()。
标签: c++ vector function-pointers std-function