Ich habe diesen Code geschrieben und kann derzeit einen ungültigen Callback akzeptieren und einen Wert an ihn übergeben. Kann ich den Benutzer jedoch in die Lage versetzen, mehrere Argumente zu setzen? Vielleicht etwas wie Callback Caller; anstelle von Callback ohne mehrere Typnamen zu definieren? Kann ich das alles irgendwie in einen Typnamen einfügen?Gibt es trotzdem kann ich eine Vorlage machen <typename T> mehrere Werte akzeptieren?
Zum Beispiel, hier ist meine Klasse
template <typename T>
class Callback
{
private:
std::vector<std::function <void (T)>> func;
public:
virtual void operator += (std::function<void (T)> _func)
{
func.push_back(_func);
}
};
ich es wie folgt verwendet werden:
Callback<int> Test;
Und es funktioniert gut, wenn ich nur ein Argument meiner Funktion übergeben werden soll. Ist es jedoch möglich, den Benutzer in die Lage zu versetzen, mehrere Werte zu definieren, ohne mehr als einen Typnamen zu haben?
I.e.
Callback< <(int, int, int)> > Test;
Etwas Ähnliches?
Erwähnenswert, dass Sie 'emplace_back' anstelle von' push_back' in C++ 11 verwenden können, um es an Ort und Stelle zu erstellen. – chris