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

11

23.02.2009, 17:33

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1>------ Erstellen gestartet: Projekt: SDL-Spiel, Konfiguration: Release Win32 ------
1>Kompilieren...
1>Game.cpp
1>.\Game.cpp(37) : error C2065: 'm_pText': nichtdeklarierter Bezeichner
1>.\Game.cpp(37) : error C2061: Syntaxfehler: Bezeichner 'CText'
1>.\Game.cpp(38) : error C2065: 'm_pText': nichtdeklarierter Bezeichner
1>.\Game.cpp(38) : error C2227: Links von "->Init" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
1>        Typ ist ''unknown-type''
1>.\Game.cpp(105) : error C2065: 'm_pText': nichtdeklarierter Bezeichner
1>.\Game.cpp(105) : error C2227: Links von "->RenderText" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden.
1>        Typ ist ''unknown-type''
1>Das Buildprotokoll wurde unter "file://c:\C++\Projekte\SDL-Spiel\SDL-Spiel\Release\BuildLog.htm" gespeichert.
1>SDL-Spiel - 6 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



Euhh?? Was ist denn da jetzt passiert??
Woran liegt DAS denn? Ich habe es jetzt so wie du also deklariert ist
m_pText.
------------------

Jonny :)

KeksX

Community-Fossil

  • »KeksX« ist der Autor dieses Themas

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

12

23.02.2009, 17:51

Der Quellcode oben ist nicht mehr aktuell.
Benutz' mal lieber das hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#ifndef TEXT_HPP
#define TEXT_HPP

// KeksX: CText

//

// Aufgabe: Ausgabe von Text


#include "Framework.hpp"
#include "SDL_ttf.h"

class CText
{
public:
    CText ();
    ~CText ();
    void RenderText (const char *Text);
        // Überladene Funktion, muss ich ja nicht mitposten 

        // [Platz sparen :) ]

    void RenderText (const char *Text, int Color_R, int Color_G, int Color_B);

private:

    SDL_Surface *m_pScreen;     // Zeiger auf den Screen des Frameworks

    SDL_Surface *m_pText;       // Zeiger auf den Text, der anzuzeigen ist

    SDL_Color m_Color;          // Farbe des Textes

    SDL_Color m_BackgroundColor; // Farbe des Hintergrundes

    TTF_Font *m_pFont;          // Zeiger auf die Schriftart

    SDL_Rect m_Pos;             // Rect des Textes


};

#endif



C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// CText

//

// Aufgabe: Screen-Pointer übergeben

//

CText::CText ()
{
    
    m_pScreen = g_pFramework->GetScreen ();
    TTF_Init ();
        // Beliebige Werte 

    m_pFont = TTF_OpenFont("Data/GameFont.TTF", 48);
} // CText


CText::~CText ()
{
    TTF_CloseFont(m_pFont);
    TTF_Quit ();
}



C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
// RenderText

//

// Aufgabe: Text auf den Bildschirm ausgeben (Standard)

//

void CText::RenderText (const char *Text)
{
    SDL_Color m_Color = {0,0,0}; 
    SDL_Surface *TextToRender = NULL; // Text, der später gerendert wird

    TextToRender = TTF_RenderText_Solid(m_pFont, Text, m_Color);
    SDL_BlitSurface(TextToRender, NULL, m_pScreen, &m_Pos);
} // RenderText



Die Klasse CGame hält einen Zeiger auf CText, der im Konstruktor dieser Klasse auf NULL gesetzt wird. In der Init Funktion instanzierst du ihn dann, und in der Run Funktion kannst du dann mit Hilfe von

C-/C++-Quelltext

1
"m_pText->RenderText("BlablaBluBlu")" 
Text anzeigen

baz

Frischling

  • Private Nachricht senden

13

08.03.2009, 13:46

Hallo

Bei mir erscheint leider diese Fehlermeldung, obwohl ich es genauso gemacht habe wie bei deinem letzten Code.

Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
--------------------Konfiguration: SDL_Game - Win32 Debug--------------------
Kompilierung läuft...
Game.cpp
C:\Projekte\spielms\Game.cpp(12) : error C2065: 'm_pText' : nichtdeklarierter Bezeichner
C:\Projekte\spielms\Game.cpp(45) : error C2653: 'CText' : Keine Klasse oder Namespace
C:\Projekte\spielms\Game.cpp(46) : error C2601: 'RenderText' : Lokale Funktionsdefinitionen sind unzulaessig
C:\Projekte\spielms\Game.cpp(111) : error C2227: Der linke Teil von '->RenderText' muss auf Klasse/Struktur/Union zeigen
Fehler beim Ausführen von cl.exe.

SDL_Game.exe - 4 Fehler, 0 Warnung(en)

14

08.03.2009, 14:13

Baz, du musst noch in CGame einen Zeiger auf die Klasse CText setzen.

C-/C++-Quelltext

1
    CText   *m_pText;                   //Zeiger auf die CText Klasse


Und im Konstruktor:

C-/C++-Quelltext

1
m_pText = NULL;


Und in der Init Funktion dann eine Instanz von CText erzeugen:

C-/C++-Quelltext

1
2
//Instanz eines Textes

m_pText = new CText ;


Dann sollte es gehen.
(Ich hatte den Fehler ja auch :P siehe oben)
------------------

Jonny :)

baz

Frischling

  • Private Nachricht senden

15

08.03.2009, 14:40

Ich nochmal

Jetzt gehts bei mir erst richtig ab!

Fehlermeldung:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
--------------------Konfiguration: SDL_Game - Win32 Debug--------------------
Kompilierung läuft...
Game.cpp
C:\Projekte\spielms\Game.cpp(12) : error C2065: 'CText' : nichtdeklarierter Bezeichner
C:\Projekte\spielms\Game.cpp(12) : error C2065: 'm_pText' : nichtdeklarierter Bezeichner
C:\Projekte\spielms\Game.cpp(12) : warning C4552: '*' : Operator hat keine Auswirkungen; Operator mit Seiteneffekt erwartet
C:\Projekte\spielms\Game.cpp(43) : error C2061: Syntaxfehler : Bezeichner 'CText'
C:\Projekte\spielms\Game.cpp(50) : error C2653: 'CText' : Keine Klasse oder Namespace
C:\Projekte\spielms\Game.cpp(51) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'
C:\Projekte\spielms\Game.cpp(51) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'
...........(usw. wiederholt)
C:\Projekte\spielms\Game.cpp(51) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'
C:\Projekte\spielms\Game.cpp(51) : fatal error C1003: Mehr als 100 Fehler gefunden; Kompilierung wird abgebrochen.
Fehler beim Ausführen von cl.exe.

SDL_Game.exe - 102 Fehler, 1 Warnung(en)

16

08.03.2009, 15:08

Kann es sein dass du nicht:

C-/C++-Quelltext

1
#include "Text.hpp"


in CGame geschrieben hast?
------------------

Jonny :)

baz

Frischling

  • Private Nachricht senden

17

08.03.2009, 15:29

Hatte es erst ganz oben, doch in CGame kommt immer noch dasselbe.

KeksX

Community-Fossil

  • »KeksX« ist der Autor dieses Themas

Beiträge: 2 107

Beruf: Game Designer

  • Private Nachricht senden

18

08.03.2009, 16:05

Bist du das Ganze mal Schritt für Schritt durchgegangen? Vielleicht hat sich irgendwo ein ";"-Fehler eingeschlichen... Allerdings können wir dir ohne genauen Code nicht wirklich sagen, wo der Fehler liegt...

Also am besten wie gesagt Schritt für Schritt das Ganze durchgehen.. Ansonsten Code posten und verzweifelt nachfragen. ( ;) )

baz

Frischling

  • Private Nachricht senden

19

08.03.2009, 16:23

Bin alles nochmal genau durchgegangen und konnte den Fehler nicht finden.
Falls ihr noch den Quellcode von Game.cpp haben wollt hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
CGame::CGame ()
{
  
#include "Game.hpp"
  m_pPlayer = NULL;
  m_pSpriteBackground = NULL;
  m_pSpriteAsteroid = NULL;
  CText   *m_pText;                   //Zeiger auf die CText Klasse

  m_pText = NULL;

} // Konstruktor

C-/C++-Quelltext

1
2
//Instanz eines Textes

  m_pText = new CText ;

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
void CText::RenderText (const char *Text)
{
    SDL_Color m_Color = {0,0,0};
    SDL_Surface *TextToRender = NULL; // Text, der später gerendert wird

    TextToRender = TTF_RenderText_Solid(m_pFont, Text, m_Color);
    SDL_BlitSurface(TextToRender, NULL, m_pScreen, &m_Pos);
} // RenderText



  // Spiel läuft

  m_bGameRun = true;

} // Init[

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

20

08.03.2009, 16:27

:lol:

Mach mal:

C-/C++-Quelltext

1
#include "Game.hpp" 


An den Anfang der Datei und nicht im Code. :)

EDIT
btw: Schau mal nach Initialisierungsliste. Und warum initialisierst du nicht gleich alle Werte?

Werbeanzeige