Supponiamo quindi di avere una classe, che contenga oggetti funzionali e nella chiamata del costruttore passino gli argomenti, che devono essere passati all'oggetto funzionale un po 'di tempo dopo. Qualcosa di simile:Variadic - come posso creare il tipo, che memorizza gli argomenti passati
class Binder{
public:
Binder(functional_object, listOfParameters);
callFunctionalObject(); // calls functional object with given list of parameters
};
Prima di C++ 11 non ho potuto utilizzare i modelli variadic, così si potrebbe fare:
struct none{};
template <typename T1, typename T2=none, typename T3=none>
class Binder{
public:
Binder(T1 functionalObject, T2 arg1=none(), T3arg3=none());
void callFunctionalObject();
private:
T1 m_functionalObject;
T2 m_arg1;
T3 m_arg2;
};
Dove callFunctionalobject
potrebbero essere attuate come segue:
template<typename T1, typename T2, typename T3>
void Binder<T1,T2,T3>::callFunctionalObject(){
callImpl(m_functionalObject, m_arg1, m_arg2);
}
e callImpl
verrebbe sovraccaricato per riconoscere oggetti di tipo none
per passare una quantità adeguata di argomenti all'oggetto funzionale.
Ora passando a C++ 11 non so come implementare il fatto, che nella sezione privata ho membri, a cui ho un accesso diretto.
Qualcuno potrebbe spiegarmi il modo in cui posso fare lo stesso utilizzando C++ 11 o C++ 14?
ho pensato a qualcosa di simile, ma non sarebbe functionalObject quindi ottenere una touple nei parametri invece di lista normale dei parametri? – DawidPi
Unpacking tuple parameters ha bisogno di un po 'di lavoro per cercare di ottenere una soluzione di codice live per te :) – coincoin
@DawidPi Aggiornamento di una soluzione C++ 14 usando 'std :: index_sequence' – coincoin