Funktionszeiger geht nicht!
-
Hallo,
wieso funktioniert folgende Zeile nicht?:typedef bool (ptr*)(std::string);Ich bekomme immer ein paar Fehlermeldungen:
error C2143: Syntaxfehler: Es fehlt ')' vor '*' error C2143: Syntaxfehler: Es fehlt ';' vor '*' error C2059: Syntaxfehler: ')' error C2226: Syntaxfehler: Typ 'std::string' nicht erwartetGruß Speedy_92
-
Wahrscheinlich willst du das:
typedef bool (*ptr)(std::string);
-
4 3 1 2 typedef bool (*ptr)(std::string);1. ptr ist ein...
2. ... funktions ...
3. ... zeiger ...
4. ... vom typ bool ...Meistens löst man so auf (afaik):
7 5 3 1 2 4 6 8MfG
-
stimmt ja

Ich hasse diese Zeiger
Dankeschön
-
Für sowas würde ich mir am liebsten ein Makro schreiben,wenn ich dafür nicht sofort prügel von allen hier bekommen würde.
-
ceplusplus@loggedoff schrieb:
4 3 1 2 typedef bool (*ptr)(std::string);1. ptr ist ein...
2. ... funktions ...
3. ... zeiger ...
4. ... vom typ bool ...Meistens löst man so auf (afaik):
7 5 3 1 2 4 6 8MfG
Achja... was meinst du überhaupt mit dieser Zahlenreihenfolge?
-
Hallo,
er meint damit seine "Lese-Reihenfolge" der Deklaration, wobei ich das anders lesen würde:
1. ptr
2. ist ein Zeiger
3. auf eine Funktion, die std::string als Argument nimmt
4. und bool zurückgibt.MfG,
Probe-Nutzer
-
Entweder ich verstehe es noch nicht ganz oder wir reden aneinander vorbei

Ich meine diese Folge:
7 5 3 1 2 4 6 8
-
es ist eher ein von rechts nach links lesen, wobei man die klammern beachten muss:
typedef bool (*ptr)(std::string);
erstmal klammern beachten:
*ptrptr ist ein zeiger
typedef bool ()(std::string);
auf eine funktion die std::string nimmt und bool liefert.immer von rechts nach links lesen, nicht herumspringen.