Geht das?
-
Hallo,
ich hab folgendes Problem.
Ich hab eine Klasse und diese Klasse soll eine Ausgabe Funktion bekommen.myClass.print(
und als Parameter soll eine andere Funktion angeben werden wo der erste Parameter vom print member mit den Ausgabewert gefüllt wird. Die restlichen Parameter sind aber egal bzw. werden bei den Aufruf übergeben.
myClass.print(void(*)(std::string, std::cout);
myClass.print(void(*)(std::string, 10, 20);
Die Print Funktion soll dann in etwa so aussehen:
void myClass::print(???) { übergebeneFunktion(this->content,std::cout); //die Funktion wird aufgerufen }
void myClass::print(???) { übergebeneFunktion(this->content,10,20); //die Funktion wird aufgerufen }
Geht das mit Templates?
Versteht man überhaupt was ich mein?mfG
-
template <typename Callable> void print(Callable callable) { callable(this->content, std::cout); }
?
-
Ok, hab ein Fehler bei der Frage gemacht.
void myClass::print(???) { übergebeneFunktion(this->content, übergebeneArgumente...); //die Funktion wird aufgerufen }
Also der print Member soll immer nur den ersten Parameter angeben die anderen sind beim Aufruf des print Member angeben und werden quasi nur weitergeleitet.
-
template <typename Callable, typename... Args> void print( Callable callable, Args&&... args ) { callable( this->content, std::forward<Args>(args)... ); }
?
-
Ok Danke.
-
In Zukunft bitte aussagekräftige Threadtitel benutzen. Das Forum lebt davon, dass später jemand mit einem ähnlichen Problem den Thread anhand des Namens finden kann. "Geht das?" ist da denkbar ungeeignet. Besser wäre hier etwas wie "Kann man Funktionsargumente weiterleiten?".