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

14.06.2007, 21:20

Grundgerüst nicht ganz klar!

Hallo!
Ich probiere gerade nur das Grundgerüst zu entwerfen für mein erstes spiel.
Ich nehme dafür die Vorlage von Galactica.

Eine Hauptklasse, die dann alles regelt.
Doch die anderen Klassen (wie zum beispiel CIntro) können nicht auf die Basisklasse zurück greifen pbwohl die instance doch extern ist (ich hoffe ich habe das richtig erklärt :lol: )
Also hier mal kurz mein test code:

main.h

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
78
79
80
81
82
#include <TriBase.h>
#include <iostream>
using namespace std;

#include "Intro.h"


#include "resource.h"





//_________________________________________________________________________

//                        Spielstände

//_________________________________________________________________________

enum EGameState
{
    GS_NONE,        // Kein Spielzustand

    GS_INTRO,       // Intro

    GS_MAIN_MENU,   // Hauptmenü

    GS_GAME         // Spiel

};
//_________________________________________________________________________

//                        -----------------------

//_________________________________________________________________________














//_________________________________________________________________________

//                        Hauptklasse

//_________________________________________________________________________

class CSpaceStrike
{

public: CIntro* Intro;

        int GS; //GameState id



public: tbResult Load();                        //Laden

        tbResult Move(float fTime);             //Bewegen

        tbResult Render(float fTime);           //Zeichnen

        tbResult Unload();                      //Löschen


};
//_________________________________________________________________________

//                        -----------------------

//_________________________________________________________________________













//_________________________________________________________________________

//                        Globale Variable

//_________________________________________________________________________



extern CSpaceStrike* g_pSpaceStrike;


//_________________________________________________________________________

//                        -----------------------

//_________________________________________________________________________


main.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
#include "main.h"



tbResult CSpaceStrike::Load()
{
    GS=GS_NONE;

    Intro = new CIntro;
    Intro->Load();

    return TB_OK;
}



tbResult CSpaceStrike::Move(float fTime)
{
    return TB_OK;
}

tbResult CSpaceStrike::Render(float fTime)
{
    return TB_OK;
}



tbResult CSpaceStrike::Unload()
{
    return TB_OK;
}




int main()
{
    return 0;
}


intro.h

C-/C++-Quelltext

1
2
3
4
5
6
7
class CIntro
{
public: tbResult Load();                        //Laden

        tbResult Move(float fTime);             //Bewegen

        tbResult Render(float fTime);           //Zeichnen

        tbResult Unload();                      //Löschen

};



intro.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
#include "main.h"


tbResult CIntro::Load()
{
    g_pSpaceStrike = new CSpaceStrike;
    cout << g_pSpaceStrike->GS << endl; 

    return TB_OK;
}

tbResult CIntro::Move(float fTime)
{



    return TB_OK;
}

tbResult CIntro::Render(float fTime)
{


    return TB_OK;
}

tbResult CIntro::Unload()
{
    

    return TB_OK;
}


Was mache ich falsch?
Gruß flo

ps: wahrscheinlich wieder so ein banahler fehler!

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

14.06.2007, 21:25

Zitat

Was mache ich falsch?


gute frage. evtl. solltest du mal schreiben wie und wo es nicht so tut wie du erwartest (z.b. indem uns die fehlermeldung verrätst). dann tun wir uns viel leichter dir zu sagen warum das so ist ;)

ich seh nicht, dass g_pSpaceStrike irgendwo definiert wird!? tippe mal drauf dass der linker schreit...

Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

3

14.06.2007, 22:04

Auf den ersten Blick würde ich sagen, dass du der int Variable GS nicht einfach einen enum GS Wert übergeben kannst.

Es muss also in etwa so lauten:

C-/C++-Quelltext

1
2
3
4
/*enum*/ EGameState  GS;
// Bla Bla


GS = GS_INTRO;


Aber natürlich sollte man wissen, was dein Prob ist

4

15.06.2007, 14:32

Zitat

ich seh nicht, dass g_pSpaceStrike irgendwo definiert wird!? tippe mal drauf dass der linker schreit...


Der Linker schreit wirklich.
(glaub ich)


Zitat

1>Intro.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""class CSpaceStrike * g_pSpaceStrike" (?g_pSpaceStrike@@3PAVCSpaceStrike@@A)" in Funktion ""public: enum tbResult __thiscall CIntro::Load(void)" (?Load@CIntro@@QAE?AW4tbResult@@XZ)".

5

15.06.2007, 14:34

dann habe ich es ja!
Danke!
einfach nochmal

CSpaceStrike* g_pSpaceStrike=NULL;

danke!
Gruß Flo

Werbeanzeige