0
我有一個類Foo
含有Bar
s的vector
:C++矢量的push_back與函數指針
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()
方法,將Bar
s添加到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'。 – tambre
另外,您可能想查看['vector :: emplace_back()'](http://en.cppreference.com/w/cpp/container/vector/emplace_back)。 –