Napisałem ten kod i obecnie można zaakceptować jedno wywołanie zwrotne void i przekazać mu jedną wartość. Czy jest jakiś sposób, aby umożliwić użytkownikowi ustawianie wielu argumentów? Być może coś w rodzaju Callback Caller; zamiast Callback bez definiowania wielu nazw typów? Czy mogę w jakiś sposób dopasować to wszystko do jednej nazwy?Czy mogę mimo wszystko zrobić szablon, aby zaakceptować wiele wartości?
Na przykład, tutaj jest moja klasa
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);
}
};
używam go tak:
Callback<int> Test;
I to działa dobrze, jeśli chcę przejść tylko jeden argument do mojej funkcji. Czy jest jednak możliwe, aby użytkownik mógł zdefiniować wiele wartości, nie mając więcej niż jednego typu nazwy?
tj.
Callback< <(int, int, int)> > Test;
Coś podobnego do tego?
Warto wspomnieć, że można użyć 'emplace_back' zamiast' push_back' w C++ 11, aby zbudować go w miejscu. – chris