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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

24.07.2007, 09:40

So hast du die Methode definiert:

C-/C++-Quelltext

1
2
3
4
5
6
ConfigClass::cfg_data *ConfigClass::ConfigClassGet() 
    { 
     ConfigClass::cfg_data *p_cfg_data = 0; 
     p_cfg_data = &config_data; 
     return p_cfg_data; 
    }


Aber es reicht auch folgendes:

C-/C++-Quelltext

1
2
3
4
ConfigClass::cfg_data *ConfigClass::ConfigClassGet() 
    { 
     return &config_data;
    }


Willst du mit dem Rückgabewert weiterschafen (Zeiger kopieren z.B.) dann nimmst du auch einen Zeiger:

C-/C++-Quelltext

1
ConfigClass::cfg_data* config_data = g_p_config->ConfigClassGet();


Aber eine Referenz ist hier in der Tat sehr viel schöner.

Zitat von »"Shoot"«


Edit: Eigentlich ging ich davpn aus, daß die Daten überall erhältlich sind, deswegen hab ich die ConfigClass von einer Singleton-Klasse abgeleitet


Sicher das du ein Singleton benötigst? Meinst du nicht es gibt eine bessere Lösung? Singletons sind grundsätzlich erstmal "böse" und zu vermeiden! :)
@D13_Dreinig

12

24.07.2007, 09:49

Jo, wahrscheinlich schon. Aber wie gesagt war das zur Übung und wie man sieht auch nötig.

btw. auch wenns offtopic ist:
ist das D3DFORMAT-enum aus Integern? die würde ich auch gern da reinschreiben. Habs einfach mal mit String versucht, aber da hat er wieder ein Konvertierungsproblem. :roll:

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

13

24.07.2007, 09:54

Ein enum aus Integern? Also entweder du meinst kein echtes enum oder du hast nen knoten im Kopf ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

24.07.2007, 10:10

@Shoot: Enumerationen bestehen immer aus integralen Typen.
@D13_Dreinig

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

15

24.07.2007, 10:13

Zitat von »"Shoot"«

Edit2: also statt *config_data = .... &config_data = .... nehmen?


C-/C++-Quelltext

1
2
3
4
ConfigClass::cfg_data *ConfigClass::ConfigClassGet() 
    { 
         return &config_data;
    }


C-/C++-Quelltext

1
2
    ConfigClass::cfg_data* config_data; 
    config_data = g_p_config->ConfigClassGet();


So sollte das klappen.

16

24.07.2007, 10:19

:D
schon möglich.
Ich frag nur deswegen, weil ich nicht weiß wie ich das adäquat speichern kann. wenn ich mir das enum in der Doku anschaue sind dahinter noch Zahlen vermerkt. Beim enum gehts ja (glaub ich) von 1 an los und dann mit nem inkrement von 1 immer weiter. ich finds jetzt gerade leider nicht mehr, aber halt so ähnlich wie hier=>

C-/C++-Quelltext

1
2
3
4
5
6
7
8
typedef enum D3DDEVTYPE
{
    D3DDEVTYPE_HAL = 1,
    D3DDEVTYPE_NULLREF = 4,
    D3DDEVTYPE_REF = 2,
    D3DDEVTYPE_SW = 3,
    D3DDEVTYPE_FORCE_DWORD = 0xffffffff,
} D3DDEVTYPE, *LPD3DDEVTYPE;

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

24.07.2007, 10:25

Wenn du keine Angaben machst fängt die Enumeration bei 0 an und wird inkrementiert. Du kannst aber auch eigene Werte angeben.

C-/C++-Quelltext

1
2
3
4
5
6
enum foo
{
   val1, // = 0

   val2, // = 1

   val3 // = 2

};


Oder:

C-/C++-Quelltext

1
2
3
4
5
6
enum foo
{
    val1 = 1, // = 1

    val2, // = 2

    val3 // = 3

};


Oder:

C-/C++-Quelltext

1
2
3
4
5
6
enum foo
{
   val1, // = 0

   val2 = 50, // = 50

   val3  // = 51

};


Oder:

C-/C++-Quelltext

1
2
3
4
5
6
enum foo
{
    val1 = 2, // = 2

    val2 = 1, // = 1

    val3 = 0 // = 0

};
@D13_Dreinig

18

24.07.2007, 13:41

Ok, habs auf Highscore
gefunden. So wie ich meinte. Das die Aufzählung intern als int gewertet wird also wenn ich d3dformat die 2 zuweise dann X8R8G8B8 bekomme.

Danke danke, jetzt kann ich mich um mein Fenster kümmern. wird wohl was dauern. :D

Werbeanzeige