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

1

22.06.2011, 23:13

[SFML] Problem beim Einbinden von Headerdateien und Co.

Hallo,

ich habe mich eben an meinem Spiel versucht und schön objektorientiert angefangen.
Ich habe 3 Dateien in VC++2010 erstellt: main.cpp, player.cpp und player.h.

Jedoch glaube ich, dass ich die player.cpp nicht richtig eingebunden habe, bzw. auch nicht weiß wie ich das am besten bewerkstellige. Der Compiler zeigt mir jedenfalls nur Fehler in der Datei player.cpp. (bspw. das Dinge nicht deklariert wären)

Hier mal mein ganzer Code auf Pastebin, da das C++ Tag - Plugin bei mir nicht funktioniert.

http://pastebin.com/guws5cXG


Solltet ihr sonst noch etwas auszusetzen haben, könnt ihr mir das gerne mitteilen. Dies ist soweit mein erstes (richtiges) "Projekt", in der ich Objektorientierung anwende, wodurch ich wahrscheinlich viele viele Fehler habe :(.

Liebe Grüße,

larsii

MCP

Alter Hase

Beiträge: 513

Wohnort: Paderborn

Beruf: Software-Entwickler

  • Private Nachricht senden

2

23.06.2011, 13:17

Die *.cpp Datei musst Du nicht extra einbinden, wenn sie zum Projekt gehört, wird sie mitkompiliert.
Du hast aber nach der Spielerklasse in Player.h das ';' vergessen!

C-/C++-Quelltext

1
2
3
4
class Player
{
   ...
};//<<<<

Dadurch kommt es in Player.cpp natürlich zu Folgefehlern.

3

23.06.2011, 15:20

Habe nun mal das ; drangehängt bekomme aber folgende Compilerfehler in der Datei player.cpp.

Er kompiliert danach auch nicht mehr die anderen Dateien.

Log: http://pastebin.com/NetTWDBR

4

23.06.2011, 16:04

Versuch mal Includeguards in den Header zu schreiben.

C-/C++-Quelltext

1
2
3
4
5
6
#ifndef MY_HEADER
#define MY_HEADER

// Code

#endif


In der Player.cpp musst du übrigens nicht <SFML/Graphics.h> includen, da dies schon in der Player.h geschieht.

5

23.06.2011, 18:09

Ich habe leider noch nie mit diesen "Guards" gearbeitet.

In welche Datei müssen diese ?

lg

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

23.06.2011, 18:13

Versuch mal Includeguards in den Header zu schreiben.

In welche Datei müssen diese ?

hmm...
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

7

23.06.2011, 18:23

Okay habe diese "Guards" in die player.h gemacht, bekomme jedoch immernoch die gleichen Fehler angezeigt.

So sieht es ungefähr aus in der player.h:


#ifndef PLAYER_H
#define PLAYER_H

#include

// die Klasse
// ...

#endif


Die Fehlermeldung:

1>------ Erstellen gestartet: Projekt: tankwars_v0.1, Konfiguration: Debug Win32 ------
1> player.cpp
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(20): error C2065: 'app': nichtdeklarierter Bezeichner
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(20): error C2228: Links von ".GetFrameTime" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(23): error C2065: 'app': nichtdeklarierter Bezeichner
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(23): error C2228: Links von ".GetInput" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(23): error C2228: Links von ".IsKeyDown" muss sich eine Klasse/Struktur/Union befinden.
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(24): error C2065: 'app': nichtdeklarierter Bezeichner
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(24): error C2228: Links von ".GetInput" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(24): error C2228: Links von ".IsKeyDown" muss sich eine Klasse/Struktur/Union befinden.
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(25): error C2065: 'app': nichtdeklarierter Bezeichner
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(25): error C2228: Links von ".GetInput" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(25): error C2228: Links von ".IsKeyDown" muss sich eine Klasse/Struktur/Union befinden.
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(26): error C2065: 'app': nichtdeklarierter Bezeichner
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(26): error C2228: Links von ".GetInput" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\users\lars\documents\visual studio 2010\projects\tankwars_v0.1\tankwars_v0.1\player.cpp(26): error C2228: Links von ".IsKeyDown" muss sich eine Klasse/Struktur/Union befinden.
1> main.cpp
1>d:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\window\window.hpp(321): error C2248: "sf::NonCopyable::NonCopyable": Kein Zugriff auf private Member, dessen Deklaration in der sf::NonCopyable-Klasse erfolgte.
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\system\noncopyable.hpp(57): Siehe Deklaration von 'sf::NonCopyable::NonCopyable'
1> d:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\system\noncopyable.hpp(41): Siehe Deklaration von 'sf::NonCopyable'
1> Diese Diagnose trat in der vom Compiler generierten Funktion "sf::Window::Window(const sf::Window &)" auf.
1> Code wird generiert...
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

23.06.2011, 18:29

Der Fehler bedeutet, dass er app nicht kennt. Du könntest das Fenster z.b. per Referenz übergeben.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

9

23.06.2011, 19:22

Und wie stelle ich das bitte an ?

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

23.06.2011, 19:37

C++ lernen :D
Such einfach Referenzen im Index deines Buchs und lies dir die erklärung durch.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige