Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Zitat von »"Jonathan_Klein"«
Mir ist aufgefallen dass ich in der Objekten auch quasi Standardparameter speichern kann, was mit Funktionszeiger denke ich nicht möglich sein dürfte.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#include <iostream> using namespace std; class Funktion1 { public: int operator() (int x, int y) { return x+y; }; }; class Funktion2 { public: int operator() (int x, int y) { return x-y; }; }; int Funktion3(int x, int y) { return x * y; } template<typename Funktion> void DoSomething(Funktion F) { cout << F(17, 4); } int main() { DoSomething(Funktion1()); DoSomething(Funktion2()); DoSomething(Funktion3); }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
typedef int (*IntFunction)(int, int); void DoSomething(IntFunction F) { cout << F(17, 4); } |
Zitat von »"Nexus"«
Templates sind eigentlich nicht dazu gedacht, vor allem weil hier die Funktionen alle die selbe Signatur und den selben Rückgabetypen haben.
Zitat von »"Nexus"«
Man kann hier nämlich alle Funktionen oder Funktionsobjekte mit zwei arithmetischen Parametern übergeben, bei denen der Rückgabetyp einer Überladung von std::ostream::operator<< entspricht oder implizit zu einer solchen konvertierbar ist.
Templates sind eher für Fälle konzipiert, wo unterschiedliche Typen übergeben werden - so wie in der STL. Wenn man nur Funktionen vom gleichen Typ übergeben soll, sind Funktionszeiger oder allenfalls Funktoren der bessere Weg.Zitat von »"dot"«
Warum nicht dazu gedacht? Die STL is voll davon...
So wie ich die Fragestellung verstanden habe schon. Wie gesagt sollen doch Funktionen mit int als Rückgabetyp und zwei int-Parametern übergeben werden? Von etwas anderem war jedenfalls nie die Rede.Zitat von »"dot"«
Naja, das ist jetzt aber nicht unbedingt etwas schlechtes, oder!?
Werbeanzeige