Rückgabetyp wird nicht erkannt
-
Hallo Com :)!
Ich programmiere gerade ein Snake-Spiel und es läuft so weit eigentlich gut. Das einzige Problem ist, dass der compiler meinen Datentyp nicht kennt.
Dies ist mein Header
class Playground { public: struct Point { int x; int y; bool operator == (Point pp) { return (x == pp.x && y == pp.y); } bool operator != (Point pp) { return !(x == pp.x && y == pp.y); } }; Playground (); bool check_eat_fruit (const Point& ss, const Point& ff) const; bool check_collision (const Point& ss) const; void play (); Point set_fruit (); //hier kein Problem private: Point snake; Point fruit; char directon; std::queue<Point> snake_history; };und dies ein Ausschnitt aus meiner .cpp datei:
Point Playground::set_fruit () //der Rückgabetyp wird nicht erkannt { Point temp_fruit; do { temp_fruit.x = rand()%21; temp_fruit.y = rand()%40; }while(1); return temp_fruit; }Die Fehlermeldung lautet:
"Point" bezeichnet keinen Typ.Der Fehler erscheint nur, wenn ich die Funktion aus der .h datei in der .cpp datei definiere. Die Deklaration alleine macht keine Probleme. auch wenn ich den Rückgabetyp ändere (von Point nach zb. int) ist alles OK.
Ich hoffe ich konnte mich klar ausdrücken!

-
Schreib mal Playground::Point statt Point
-
Ich würde Point nicht als inneren Typ von Playground definieren sondern auf derselben Ebene.
ffas schrieb:
class Playground { public: struct Point { ..... }; ..... Point set_fruit (); //hier kein Problem private: ..... };und dies ein Ausschnitt aus meiner .cpp datei:
Point Playground::set_fruit () //der Rückgabetyp wird nicht erkannt { .....Das müsste
Playground::Point Playground::set_fruit() { .....oder
auto Playground::set_fruit() -> Point { .....heißen. Letzteres geht erst ab C++11.
-
Richtungen kann man besser als ein enum darstellen.
-
Vielen dank!

So gehts.
@ krümelkacker
Danke für den denkanstoß. Aber was ist daran besser?@ irgeneinname
Wird sofort geändert 