Du bist nicht angemeldet.

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

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

11

21.07.2015, 14:12

Puh sieht auch okay aus. Was ich ungünstig finde ist das es den Bezeichner "Richtung" quasi drei mal gibt: direction, Direction, dir (als Parameter). Das verwirrt.
Ich glaube nicht das der Fehler im gepostetem code liegt. Was stehen denn für Zeilen an den Fehlermeldungen? Hast du da mal genauer geschaut. Vor allem Syntaxfehler zeigt jede IDE sofort an (normalerweise).

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

12

21.07.2015, 15:04

Wät?

C-/C++-Quelltext

1
2
3
    Direction direction;
...
    int   Direction;    // Richtung, in der sich der Kopf bewegt
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

13

21.07.2015, 15:14

Genau das ist das Problem. Du hast einmal Direction als Typ und einmal als member variabel (bzw er geht davon aus, dass du die member variabel meinst, weil die im lokaleren scope ist). Da weiß der Compiler nicht, welche davon gemeint ist. Du könntest jetzt

Quellcode

1
::Direction
schreiben, damit er weiß das du den globalen Typ meinst. Oder mal einfach über ne bessere Namensgebung nachdenken.

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

14

21.07.2015, 16:33

Ah ok Danke. Da hätte cih auch selber drauf kommen könen :dash: . Nun habe ich noch 2 andere Fehler:

Fehler 1 error C2027: Verwendung des undefinierten Typs "Player" c:\program files (x86)\microsoft visual studio 12.0\vc\include\memory 1198
Fehler 2 error C2338: can't delete an incomplete type c:\program files (x86)\microsoft visual studio 12.0\vc\include\memory 1199

Jeweils springt er in die memory, wenn ich einen doppelklick darauf mache. Was ist jetzt der Fehler? Braucht ihr noch irgendwelche Dateien?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

15

21.07.2015, 16:50


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

16

21.07.2015, 16:56

Anders formuliert: Forward-Declarations reichen nicht, wenn es darum geht ein Element zu löschen. Include in der *.cpp hilft.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

17

21.07.2015, 17:54

Anders formuliert: Forward-Declarations reichen nicht, wenn es darum geht ein Element zu löschen. Include in der *.cpp hilft.


Meinst du das include von <memory> oder ein anderes?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

18

21.07.2015, 17:59

Ich meine ein Include für was auch immer Du nur eine Forward-Declaration benutzt hast. Offenbar ist das hier "Player".
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

cojo2015

Alter Hase

  • »cojo2015« ist der Autor dieses Themas

Beiträge: 516

Wohnort: bei mir zu Hause

Beruf: Schüler

  • Private Nachricht senden

19

21.07.2015, 18:03

Ich meine ein Include für was auch immer Du nur eine Forward-Declaration benutzt hast. Offenbar ist das hier "Player".

Also in Player.hpp mache ich eine Forward-Declaration von class Game. Nun habe ich in Player.hpp das geschrieben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
#include <deque>
#include "board\include\board.hpp"
#include "core\include\Game.hpp"

...

class Game;

...


Aber es kommt immernoch der Fehler. Hab ich dich flasch verstanden?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cojo2015« (21.07.2015, 18:19)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

20

21.07.2015, 18:17

Offenbar, ja. Du kannst nichts löschen, was nur als Forward-Declaration vorliegt. Der ganze Typ muss included werden. In diesem Fall muss also Player in dem cpp inkludiert werden, wo der Compile-Fehler aufgetreten ist.

Als Daumenregel würde ich generell empfehlen, dass zyklische Abhängigkeiten von Headern und Klassen ein Zeichen dafür sind, dass man etwas falsch macht.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Werbeanzeige