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

05.01.2012, 21:46

Verwendung des undefinierten Typs "CIntro"

Hallo Liebe Community

Ich bin gerade dabei mein erstes kleines Spiel zu programmieren. Ich habe die Klasse CIntro erstellt und in der dazugehörigen .cpp Datei die Funktionen definiert. Da funktioniert auch noch alles und es wird nichts rot unterstrichen. Wenn ich mit der Maus bei CIntro::Render() auf das CIntro gehe wird mir angezeigt: class CIntro. Wenn ich jetzt aber das Projekt starte bekomme ich unten im Kompilerfenster Fehlermeldungen in dene steht: error C2027: Verwendung des undefinierten Typs "CIntro" : Siehe Deklaration von "CIntro". Und es wird mir bei jeder Zeile angezeight, wo ich eine Funktion definiere. Außerdem wird angezeigt das die Funktionen Load() und Unload() nicht gefunden werden können(sämtliche anderen Funktionen aber schon), und der Zeiger m_pTitle nicht deklariert ist. Wenn ich mit der Maus draufgehe wird aber alles angezeigt. Das Komische ist, dass oben wo man den Quelltext eingibt alles funktioniert, dann aber Kompilerfehler bekomme

Ich hoffe dass ihr mir helfen könnt.

Tobi

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

05.01.2012, 21:56

Du redest die ganze Zeit über Funktionen. Meinst Du eventuell Methoden?
Außerdem sehe ich keine Frage ;)
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]

3

05.01.2012, 22:02

Eigentlich meinte ich Funktionen. Und die frage ist, warum ich beim Build eine Fehlemeldung bekomme, wenn doch vor dem build alles funktioniert und mir da noch alles angezeigt wird

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

drakon

Supermoderator

Beiträge: 6 513

Wohnort: Schweiz

Beruf: Entrepreneur

  • Private Nachricht senden

4

05.01.2012, 22:12

Was die IDE macht ist lediglich eine kleine Unterstützung für dich. Wenn da nichts rot ist heisst das noch überhaupt nicht, dass das Fehlerfrei ist oder überhaupt kompiliert.

Ohne Code können wir auch nicht viel sagen, ausser, dass ich meine Standard Vermutung bringe, nämlich dass du möglicherweise zyklische includes hast. Lies mal das hier.

5

05.01.2012, 22:14

nein. ich meine doch methoden. ich stand grad nur ein bisschen auf dem schlauch

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

05.01.2012, 22:15

Eigentlich meinte ich Funktionen. Und die frage ist, warum ich beim Build eine Fehlemeldung bekomme, wenn doch vor dem build alles funktioniert und mir da noch alles angezeigt wird

Dann musst Du wohl etwas Code zeigen. Denn CIntro::Render() ist eine Methode und keine Funktion.

Edit:
Aha! Du musst wohl trotzdem Code zeigen. :D
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]

7

05.01.2012, 22:21

wie soll ich das machen. ich hab hier noch nie code "gezeigt". reicht das als kommentar. ist nicht riesig. oder soll ich das auf irgend einer seite hochladen

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

8

05.01.2012, 22:29

in der symbolleiste über dem eingabefeld hier findest du so n nettes "C++" symbol. da drauf klicken und in die tags deinen code rein kopieren ;)

9

05.01.2012, 22:35

Hier erst mal die .h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <TriBase.h>class CIntro 
{public: 
//Variablen
PDIRECT3DTEXTURE9 m_pTitle;inline CIntro() 
: m_pTitle(NULL)
{
}
//Methoden
tbResult Init();
tbResult Exit();
tbResult Load();
tbResult Unload();tbResult Move(float fTime);tbResult Render(float fTime); 
};

und dann hier noch die .cpp

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <TriBase.h>
#include "Intro.h"
#include "Cosmsos Fighter.h"
//Vertizes für das Titelbildstruct STitleVertex 
{
tbVector3 vPosition;float fRHW; 
D3DCOLOR Color;
tbVector2 vTex0;static const DWORD dwFVF; 
};
 const DWORD STitleVertex::dwFVF = D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1; 
tbResult CIntro::Init()
{if (Load()) TB_ERROR("Fehler Beim Initialiesieren des Titelbildes",TB_ERROR);return TB_OK; 
}
tbResult CIntro::Exit()
{
Unload();return TB_OK; 
}
tbResult CIntro::Load()
{m_pTitle = tbTextureManager::Instance().GetTexture("Data\\Title.png", TRUE);if(m_pTitle == NULL) 
{TB_ERROR("Fehler beim Laden von Data\\Title.png",TB_ERROR) 
}return TB_OK; 
}
 
tbResult CIntro::Unload()
{
tbTextureManager::Instance().ReleaseTexture(m_pTitle);return TB_OK; 
}tbResult CIntro::Move(float fTime) 
{if(WasButtonPressed(TB_KEY_RETURN)) 
{
g_pCosmosFighter->SetGameState(GS_MAIN_MENU);
}
g_pCosmosFighter->m_pBriefing->Process();return TB_OK; 
}tbResult CIntro::Render(float fTime) 
{
STitleVertex aVertex[4];
 
//Puffer lehren und Szene beginnen
tbDirect3D& D3D = tbDirect3D::Instance();
D3D->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, tbColor (0.0f,0.0f,0.0f), 1.0f,0);
D3D->BeginScene();
 
 
//-------------------------------------------------------------------------------------------------------------------------------
 
//Vertexformat und Titelbild setzen
//Links Unten
aVertex[0].vPosition = tbVector3(0.0f, D3D.GetScreenSize().y, 0.5f);
aVertex[0].fRHW = 1.0f;
aVertex[0].Color = tbColor(1.0f, 0.8f, 0.8f);
aVertex[0].vTex0 = tbVector2(0.0f, 1.0f);
//Links Oben
aVertex[1].vPosition = tbVector3(0.0f, 0.0f, 0.0f);
aVertex[1].fRHW = 1.0f;
aVertex[1].Color = tbColor(0.8f, 1.0f, 0.8f);
aVertex[1].vTex0 = tbVector2(0.0f, 0.0f);
//Rechts Unten
aVertex[2].vPosition = tbVector3(D3D.GetScreenSize().x, D3D.GetScreenSize().y, 0.5f);
aVertex[2].fRHW = 1.0f;
aVertex[2].Color = tbColor(1.0f, 1.0f, 0.8f);
aVertex[2].vTex0 = tbVector2(1.0f,1.0f);
//Rechts Oben
aVertex[3].vPosition = tbVector3(D3D.GetScreenSize().x, 0.0f, 0.5f);
aVertex[3].fRHW = 1.0f;
aVertex[3].Color = tbColor(1.0f, 1.0f, 0.8f);
aVertex[3].vTex0 = tbVector2(1.0f, 0.0f);
 
 
//Als Dreiecksfolge anzeigenD3D->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, aVertex, sizeof(STitleVertex)); 
//-----------------------------------------------------------------------------------
//Text anzeigen
g_pCosmosFighter->m_pFont1->Begin();g_pCosmosFighter->m_pFont1->DrawText(tbVector2(0.65f, 0.8f), "Powered by TriBase\nDrücke Enter", TB_FF_RELATIVE | TB_FF_RELATIVESCALING); 
g_pCosmosFighter->m_pFont1->DrawText(tbVector2(0.05f, 0.8f), "Programmierung: Tobias Wicke" , TB_FF_RELATIVE | TB_FF_RELATIVESCALING, -1, tbColor(0.5f,0.5f,1.0f),tbColor(1.0f),tbVector2(1.0f,1.5f));g_pCosmosFighter->m_pFont1->DrawText(tbVector2(0.05f, 0.85f), "Grafik: Marvin Döring", TB_FF_RELATIVE | TB_FF_RELATIVESCALING, -1, tbColor(0.5f, 0.5f, 1.0f), tbColor(1.0f), tbVector2(1.0f,1.5f)); 
g_pCosmosFighter->m_pFont1->End();
//-----------------------------------------------------------------------------------------------------------------------------------------
//Szene Beenden
D3D->EndScene();return TB_OK; 
}

und danke für den tipp. Manchmal bin echt richtig Blöd :whistling:

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

10

05.01.2012, 23:26

Das problem habe ich jetzt gelöst. Vielen Dank nochmal, dass ihr euch die mühe gemacht hab.Jetzt habe ich noch ein paar Linker fehler ;( . Aber damit habt ihr ja nichts zu tun

Zitat

Das programm, dass ich eben geschrieben hab ließ sich ohne einen einzigen Fehler kompilieren und und funktioniert so wie es soll. Das macht mir Angst, da ist was Faul

Werbeanzeige