Funktionsübergabe an Templates innerhalb einer Klasse
-
Hallo,
ich versuche gerade Templates innerhalb von Klassen zu benutzen und erhalte beim Kompilieren einen Fehler aus dem ich nicht schlau werde.
Hab meinen Code auf die problematischen Stellen reduziert.
class Parameter { public: vector<string> Paramlist= { "Param_1", "Param_2" }; string getParameter(string parameter) { return parameter; } void start() { std::cout << for_each_param(Paramlist.begin(), Paramlist.end(), getParameter) << endl; } private: template<class InputIterator, class Function> string for_each_param(InputIterator first, InputIterator last, Function f) { string tmp; for (; first != last; ++first) { tmp = tmp + " " + f(*first); } return tmp; } };int main() { Parameter param; param.start(); return 0; }Hier die Fehlermeldung:
Fehler C3867 "Parameter::getParameter": Keine Standardsyntax; "&" zum Erstellen eines Verweises auf das Member verwenden.Muss ich dafür das Template anpassen oder muss die Funktionsübergabe anders aussehen?
-
Die Funktionsübergabe sollte anders aussehen, es ist schließlich eine Memberfunktion, die an ein Objekt gebindet werden muss.
std::bind(&Parameter::getParameter, this, std::placeholders::_1 /* erwartet ein Argument */);Das müsste klappen.
-
Hat geklappt vielen Dank!