2016-04-12 15 views
0

wenn ich eine Funktion, und ich möchte einen Zeiger auf sie mit einem bestimmten Parameter machen ich auto verwenden, aber wie folgt aus:C++ Vektor von Zeigern auf Funktionen mit spezifischen Parametern

void bar(int n){std::cout << n;} 
auto foo = std::bind(bar, 2); 

aber wenn ich will machen ein Vektor dieser Zeiger nicht

std::vector<auto> v; 
+2

Sie sind nicht einen Zeiger auf eine Funktion zu machen. Sie erstellen einen Bindungsausdruck. Sie können nicht (einfach) einen Container mit Bind-Ausdrücken erstellen, aber Sie * können * einen Vektor von 'std :: function ' erstellen. –

+0

Wissen Sie, was 'auto' hier bedeutet? – immibis

Antwort

2

funktioniert Sie vector<decltype(foo)> v; schreiben konnte, obwohl das wahrscheinlich nicht tut, was Sie wollen (andere bind Ausdrücke geben können inkompatible Typen).

Wie in den Kommentaren erwähnt, ist std::function für diesen Zweck konzipiert:

std::vector< std::function<void()> > v; 

v.emplace_back(foo); 
v.emplace_back(std::bind(bar, 2)); 
v.emplace_back([]{ std::cout << 2; }); 
Verwandte Themen