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

Sluggy

Frischling

  • »Sluggy« ist der Autor dieses Themas

Beiträge: 30

Wohnort: Spardorf

Beruf: Schüler

  • Private Nachricht senden

1

25.10.2006, 20:35

C++ Problem

hallo leute,

ich hab mal ne allgemeine frage zu c++. Dazu erstmal ein bisschen code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct Struktur
{
    int s1;
    int s2;
};

class CD3D
{
public:
    int variable
    void Funktion(Struktur benoetigter_parameter_von_mutterklasse);
};

class CEngine
{
public:
    Struktur strukturinstanz;
    CD3D D3D;
};


so etwa die situation in meiner engine^^

mein problem ist eigentlich nur, dass ich statt

C-/C++-Quelltext

1
void Funktion(Struktur benoetigter_parameter_von_mutterklasse);


C-/C++-Quelltext

1
void Funktion();


schreiben will...

Ich kann zwar von der Klasse CEngine mit

C-/C++-Quelltext

1
D3D.Variable

auf die Variablen der Tochterklasse zugreifen, aber ich weiß nicht wie ich es andersherum machen soll. Ich bin mir nicht mal sicher, ob das überhaupt geht, aber bestimmt kennt sich einer von euch besser in c++ aus als ich :D

ich dachte da an sowas wie

C-/C++-Quelltext

1
void CEngine::D3D::Funktion(void) { ... }

geht aba net :lol:
LIFE SUCKS!!!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

25.10.2006, 20:56

Re: C++ Problem

Zitat von »"Sluggy"«

hallo leute,

ich hab mal ne allgemeine frage zu c++.

Dann hast du eindeutig ins falsche Forum gepostet ... verschiebe

Sluggy

Frischling

  • »Sluggy« ist der Autor dieses Themas

Beiträge: 30

Wohnort: Spardorf

Beruf: Schüler

  • Private Nachricht senden

3

25.10.2006, 21:13

oh sorry
LIFE SUCKS!!!

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

4

25.10.2006, 21:57

Du könntest beispielsweise das Objekt der EngineKlasse (oder ist es eine Singleton?? --> Wärs noch einfacher!) an die D3D-Klasse übergeben. Also die D3D klasse besitzt eine Eigenschaft, zB
CEngine* m_pEngine;
und den füllst du bei der EngineInitialisierung einfach mit this aus... Dann kannst du immer und überall von D3D auf Engine zugreifen (eventuell könntest du D3D noch als friend deklarieren...)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

5

26.10.2006, 07:26

Hmm, warum willst du denn keine Parameter übergeben?

Sonst würde ich die Klassen eher anders zusammenstellen:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
struct Struktur { ... };

class CD3D
{
  public:
    Struktur parameter;
    void Funktion ();
};

class Engine
{
public:
  CD3D D3D;
};

void SetParameter (Engine* e)
{
  e->D3D.parameter.s1 = 0;
  e->D3D.parameter.s2 = 1;
}


Wenn die Parameter ein elementarer Teil der CD3D Klasse sind, sollten sie auch dort deklariert werden.

Wenn sie das nicht sind, ist es auf jeden Fall besser, sie als Parameter zu übergeben. Wenn du nicht kopieren willst, kannst du auch einen Zeiger (oder eine Referenz) übergeben, so wie ich das in der SetParameter Methode gemacht habe.

Gruss,
Rainer

PS: und wenn ich hier noch einmal Singleton lese, gibt es was auf die Finger!
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

Sluggy

Frischling

  • »Sluggy« ist der Autor dieses Themas

Beiträge: 30

Wohnort: Spardorf

Beruf: Schüler

  • Private Nachricht senden

6

26.10.2006, 14:17

Also...

Die Parameter sind nicht teil der CD3D-Klasse, wenn ich z.B. mit dieser Klasse auf den Handle des Fensters, in der das Programm ausgeführt wird zugreifen will (in eingine-Klasse gespeichert)

Das mit SetParameter ist meiner Meinung nach zu unübersichtlich...

Leider weiß ich nicht was Singleton Klassen und friends sind (ich weiß ich bin ein Noob :D), kann mal jemand ein Beispiel machen?

Ich hab jetz z.B. folgende Methode geschrieben:

C-/C++-Quelltext

1
2
toe_Engine Engine;
Engine.D3D.End(Engine);


es müsste doch möglich sein die Mutterklasse nicht als Parameter zu benutzen, um auf die Daten zuzugreifen?!
LIFE SUCKS!!!

Werbeanzeige