Funktionstemplate und Funktionszeiger
-
cobb schrieb:
der 3. Parameter ist ein Funktionszeiger auf eine parameterlose Funktion
...
Die ganzen Funktionen sind bei mir in einer Klasse definiert StaticArray:... class StaticArray { ... T& next() { ... } };Als nichtstatische Memberfunktion ist dein next nicht so parameterlos wie du meinst.
-
Hacker, danke für deine Mühe, ich muss leider gestehen, dass ich nicht wirklich dein Code nachvollziehen kann. Ja das ist schon richtig es muss der aktuelle Bereich (Element)..... mit dem Wert aufgefüllt werden. Der letzte Iterator soll einfach auf den letzten Element zeigen in einem Array.
-
Hallo camper, ich verstehe nicht ganz was du damit meinst, es werden ja keine Parameter übergeben bei der Funktion next(); wie ich dass verstehe. Wenn es Parameter übergeben bekommen hätte, würde es doch z.b. so aussehen " next(int a, int b)" oder nicht?
-
Hacker schrieb:
Maxi schrieb:
Hä? Er soll selbst eine schreiben, sonst hätt' das doch schon längst jemand geschrieben

Naja, unter dem Link steht sogar der Quelltext für so eine Funktion, deshalb hab ich den rausgesucht
-
cobb schrieb:
Hallo camper, ich verstehe nicht ganz was du damit meinst, es werden ja keine Parameter übergeben bei der Funktion next(); wie ich dass verstehe. Wenn es Parameter übergeben bekommen hätte, würde es doch z.b. so aussehen " next(int a, int b)" oder nicht?
Und was meinst du was das
thisinthis.next()ist?
Klar, du schreibst es nicht hin, aber übergeben wird es trotzdem.Zusätzlich ist noch die Syntax mit der du "next" übergeben willst falsch:
cobb schrieb:
StaticArray <Fraction, 12> ArrayFraction; ArrayFraction.generate(&ArrayFraction[0],&ArrayFraction[12],next());next()ist ein Funktionsaufruf, kein Funktionszeiger und auch kein Memberfunktionszeiger.
Memberfunktionszeiger wäre&StaticArray::next.Deine Probleme stammen grösstenteils daher, dass du auf die etwas komische Idee gekommen bist alles in eine Klasse reinstecken zu müssen. Und halt noch dazu als nicht-statische Member.
In C++ kann man auch Funktionen machen, so ganz ohne Klassen. Nennt man dann freie Funktionen.
In der Aufgabenstellung steht auch nix davon dass du das Array selbst bereitstellen sollst, und schon gar nix davon dass du die Grösse des Arrays beschränken sollst.
-
@Hacker
Wo liest du aus der Aufgabenstellung raus dass mit Iteratoren gearbeitet werden soll? Oder dass das Intervall halb-offen ist? Oder dass er allgemeine Funktoren unterstützen soll (da steht ganz Klar Funktionszeiger)?Aber hauptsache mal was gepostet, nen.
-
hustbaer schrieb:
@Hacker
Wo liest du aus der Aufgabenstellung raus dass mit Iteratoren gearbeitet werden soll? Oder dass das Intervall halb-offen ist? Oder dass er allgemeine Funktoren unterstützen soll (da steht ganz Klar Funktionszeiger)?Aber hauptsache mal was gepostet, nen.
Lol
Ok, dann pass mal auf.
@Maxi: Hab jetzt den Inhalt vonstd::generategenommen, aber die Funktiongeneratean sich gefällt Hustbaer offensichtlich genausowenig wie meine.template<typename i_t> void compute(i_t* start, i_t* end, i_t (*f)()) { do *start = f(); while(start++ != end); }
-
hustbaer, d.h. dass ich am besten die Funktion next() als globale Funktion machen soll und nicht in einer Klasse mit der generat(), verstehe ich dich richtig???
-
genau die Funktion sollte global sein.
-
danke demonking, werde ich gleich ausprobieren.....