Forum
Tipps
News
Menu-Icon

C++ vorankündigung auf instanz?

wie kann ich in c++ eine instanz ankündigen?

damit meine ich, so wie man es auch mit klassen machen kann, zb

class huii; wäre ja eine art "vorankündigung" auf eine klasse huii

hier wie es in meinem code steht (ship, gstuff, textures und level sind klassen):
textures game_textures;
ship game_ship = ship(&game_textures);
level* game_level = new level(game_gstuff.getlvlnumber(), &game_ship, &game_textures, &game_gstuff);
gstuff game_gstuff = gstuff(game_level);

das problem hier ist, dass level noch nicht weiß, dass ein game_gstuff existiert, kann ich hier also auch so eine art "vorankündigung" darauf machen bzw wenn ja wie?
« Letzte Änderung: 12.09.10, 08:29:26 von Triver »

Antworten zu C++ vorankündigung auf instanz?:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
class huii;
ist keine "Vorankündigung", sondern du erzeugst damit bereits eine Instanz der Klasse (der default-Konstruktor ohne Parameter wird verwendet). "Vorankündigungen" gibt es nicht.
Was du hier machst geht also nicht. Zirkuläre Beziehungen zwischen Klassen sind zwar möglich (kein guter Stil aber was solls...), allerdings nicht schon auf Konstruktor-Ebene.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

hmm und wie soll ich dann in den klassen selbst auf andere klassen zugreifen? schließlich will ich ja zb in der klasse level auf funktionen der klasse textures zugreifen.

bisher habe ich es eben so gemacht, dass ich die instanzen als zeiger im konstruktor hatte und dadurch auf die klassen zugreifen konnte, wenn es aber hier nicht möglich ist, wie soll ich es sonst machen?

Hi,
wenn Du ein Element einer Klasse als public deklarierst, kannst darauf von "draussen" zugreifen.

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

schon klar, nur dann sagt er mir

a nonstatic member reference must be relative to a specific objectdeshalb habe ich das ja mit den zeigern in den konstruktoren gemacht, damit ich auf andere klassen in den klassen zugreifen kann.

aber ich habe mir gedacht, kann man nicht einfach innerhalb der klassen, instanzen auf andere klassen machen damit man auf diese zugreifen kann (bzw wäre es "sauber")?

dann bräuchte ich nämlich die zeiger in den konstruktoren nicht und mein problem wäre gelöst ;D

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Klar kannst du innerhalb einer Klasse Instanzen anlegen. Grundsätzlich solltest du überlegen, ob du die zyklischen Abhängigkeiten wirklich brauchst, d.h. ob die Klasse gstuff auf die Klasse level zugreifen muss und gleichzeitig die Klasse level auf gstuff. Vielleicht kannst du Teile in andere Klassen verlagern, so dass das nicht mehr nötig ist.
Ansonsten kannst du das ja evtl. auch über eine set-Funktion machen:

A a;
B b(a);
a.setB(b);
Statt schon beim Anlegen im Konstruktor eine Instanz von B anzugeben, wird die erst nachträglich über eine Funktion in die Instanz von Klasse A "geschoben".

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button
Zitat
Klar kannst du innerhalb einer Klasse Instanzen anlegen. Grundsätzlich solltest du überlegen, ob du die zyklischen Abhängigkeiten wirklich brauchst, d.h. ob die Klasse gstuff auf die Klasse level zugreifen muss und gleichzeitig die Klasse level auf gstuff. Vielleicht kannst du Teile in andere Klassen verlagern, so dass das nicht mehr nötig ist.
Natürlich kann ich das machen, nur würde dies dann meiner Ansicht nach nicht mehr dem Sinn von Klassen/Funktionseinteilung entsprechen, da level dann eine Funktion haben würde, dessen Name/Sinn nicht dem der Klasse level entspricht (ich denke das werde ich machen wenn ich mit allem anderen scheitern werde);D

Zitat
Ansonsten kannst du das ja evtl. auch über eine set-Funktion machen:
A a;
B b(a);
a.setB(b);
Statt schon beim Anlegen im Konstruktor eine Instanz von B anzugeben, wird die erst nachträglich über eine Funktion in die Instanz von Klasse A "geschoben".
werde ich mir mal genauer anschauen bzw ausprobieren ;)

« Datein und das entpacken...in VB auf prozessbeendigung warten »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Wiederherstellungspunkt
Siehe Systemwiederherstellung. ...

Quellcode
Ein Quellcode, auch als Quelltext bekannt, bezeichnet den unkompilierten Programm-Code einer Software. Quell- oder Programm-Code ist der auch für Menschen lesbare Co...

Unicode
Unicode ist ein international anerkannter Standard, der als universeller Zeichencode ("Universal Code") dient und durch das Unicode-Konsortium entwickelt und verwaltet wi...