JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=2137536c34103c975268dfe4ecff8580Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Globale klasse

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Xibus
Junior JLI'ler


Alter: 32
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 18.06.2007, 19:05    Titel: Globale klasse Antworten mit Zitat

hiho,
ich hab da malwieder ein kleines problem. Da ich auf die instanz meiner logwriter klasse im ganzen spiel zugreifen möchte hab ich sie außerhalb der main funktion geschrieben, also davor. Ich kann jedoch nur main.cpp also in der gleichen datei darauf zugreifen. Wie kann ich das denn nun machen das ich von überall darauf zugreifen kann ?
_________________
Signatur

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Maxim
Senior JLI'ler



Anmeldedatum: 28.03.2004
Beiträge: 249

Medaillen: Keine

BeitragVerfasst am: 18.06.2007, 19:35    Titel: Antworten mit Zitat

^^ Schau mal in Tutorial-Bereich nach Singleton Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 18.06.2007, 21:17    Titel: Antworten mit Zitat

Wenn du unbedingt ein globales Objekt erstellen möchtest: Du brauchst eine Header Datei und eine cpp Datei. Denn man muss auch globale Variablen deklarieren um sie überall benutzen zu können:

CPP:
//global.h
extern LogBook g_LogObj;


CPP:
//global.cpp
LogBook g_LogObj;


Mit dem extern sagtst du dem Kompilier, das es eine solche Variable geben wird. Erstellt wird sie erst in der .cpp. Das muss so sein, da du sonst mehrere Variablen mit dem selben Namen erstellen würdest, wenn du die global.h in mehreren Dateien inkludierst.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Xibus
Junior JLI'ler


Alter: 32
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 19.06.2007, 06:33    Titel: Antworten mit Zitat

ah nice thx Very Happy
_________________
Signatur

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Xibus
Junior JLI'ler


Alter: 32
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 19.06.2007, 11:17    Titel: Antworten mit Zitat

sry für doppelpost aber sonst liest es ja keiner mehr.

ALso ich habs so versucht wie du es gesagt hast also etwa so:

Global.h
CPP:
#include "LogWriter.h"
extern LogWriter LW;


main.cpp
CPP:
#include "Global.h"
LogWriter LW;



dann erhalte ich:
: error C2146: syntax error : missing ';' before identifier 'LW'


Also hab ich es dann so gemacht:

Global.h
CPP:
#include "LogWriter.h"
extern LogWriter;


main.cpp
CPP:
#include "Global.h"
LogWriter LW;


Wenn ich jetzt jedoch in Beispiel.cpp
CPP:
#include "Global.h"
LW.open();

mache kennt er die Instanz immer noch nit


EDIT: @maxim in deinem tut geht es ja wirklich um mein problem Very Happy
_________________
Signatur

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 19.06.2007, 16:34    Titel: Antworten mit Zitat

Hast du eine Global.cpp?
Versuch mal:
CPP:
Global.cpp

#include "Global.h"
LogWriter LW;

_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Xibus
Junior JLI'ler


Alter: 32
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 19.06.2007, 18:13    Titel: Antworten mit Zitat

Für alle die maln prob damit kriegen werden:

Wenn etwas in enier bestimmten datei deklariert wurde und man von einer anderen datei darauf zugreifen möchte muss man in diese andere datei extern + gleiche deklaration schreiben.

beispiel:

1.cpp:
CPP:
int a = 0;



2.cpp
CPP:
extern int a;

a = 2;


so funktioniert es Wink
_________________
Signatur

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 20.06.2007, 11:11    Titel: Antworten mit Zitat

das
CPP:
extern int a;
kannst du dabei allerdings auch in einer header haben, die die *cpp inkludiert; dann musst du das nicht in jeder *.cpp neu hinschreiben.

Gruß DXer
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Xibus
Junior JLI'ler


Alter: 32
Anmeldedatum: 18.02.2007
Beiträge: 91
Wohnort: Deutschland -> NRW -> OWL -> Paderborn -> Salzkotten
Medaillen: Keine

BeitragVerfasst am: 20.06.2007, 12:18    Titel: Antworten mit Zitat

hat bei mir nur probleme gemacht iwie
_________________
Signatur

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum