Aktuelle Zeit: 13.05.2025, 01:22

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Compilerproblem
BeitragVerfasst: 21.05.2009, 23:15 
Offline

Registriert: 21.05.2009, 23:10
Beiträge: 17
Hallo,

ich benutze Visual C++ 2008 Express und hab ein Problem beim kompilieren...
wenn ich eine Klasse habe, die Irrlichtspezifische Variablentypen benutzt, bekomme ich einen Error, dass ich keine Bezeichnung angegeben habe.

Also beispielsweise folgende Testklasse:

Code:
class mainCamera{
private: ICameraSceneNode* camera;
public: mainCamera(){
      this->camera=smgr->addCameraSceneNodeFPS();
      }
      vector3df getPosition(){
         return this->camera->getPosition();
      }
};


funktioniert so ganz gut. Wenn ich die aber aufteile in eine header-Datei und eine cpp-Datei, beschwert er sich über das private: ICameraSceneNode* camera;, weil er scheinbar den Typ ICameraSceneNode nicht kennt. Include ich dann die irrlicht.h funktioniert das, dafür beschwert sich der Compiler dass smgr nicht definiert ist. Tue ich das, beschwert er sich wieder an anderer Stelle im Code, dass er wieder definiert wird.

Wie kann man sowas umgehen? Hab mich heute den Tag über schon dumm und dusselig gesucht, aber Klassendeklarationen mit header-Datei und Standardfremden Variablentypen scheint noch niemand veröffentlicht zu haben...


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Compilerproblem
BeitragVerfasst: 22.05.2009, 17:03 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Hi,

du hast es erstmal mit 2 Problemen zu tun zum einen musst du in deiner CPP Datei die Irrlicht.h includen, wenn du Irrlicht Klassen und Objekte wie ICameraSceneNode verwenden willst. Zum anderen hast du das Problem, dass deine Klasse die Variable smgr nicht kennt, da sie außerhalb in deiner main.cpp Datei definiert wurde, musst du der Klasse also nun noch mitteilen, dass es diese Variable gibt und welchen Wert sie hat.

Ich löse dies meist mit einer separaten init(ISceneManager* smgr) Funktion und speicher den Manager dann in meiner Klasseninternen Variabel _smgr. Wenn du dann in deinem Hauptcode smgr definiert hast rufst du einfach deineKlasse.init(smgr) auf und schon weiß die Klasse bescheid und das Problem ist gelöst...

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Compilerproblem
BeitragVerfasst: 22.05.2009, 18:00 
Offline

Registriert: 21.05.2009, 23:10
Beiträge: 17
Erstes ist kein Problem, hab ich verstanden und auch schonmal ausprobiert gehabt gestern;)

Das zweite versteh ich gerade nicht ganz: wenn ich den SceneManager in der Klasse neudeklariere und in anderen Klassen auch brauche, hab ich dann nicht mehrere?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Compilerproblem
BeitragVerfasst: 22.05.2009, 18:34 
Offline

Registriert: 12.09.2008, 21:41
Beiträge: 187
Wohnort: Deutschland
Ja stimmt, hab mich nicht ganz richtig ausgedrückt du speicherst in der Klasse nur den Pointer auf den SceneManager

Gruß
Scarabol

_________________
My Toolbox:
- Irrlicht 1.7.1
- Blender 2.49a
- Microsoft Visual C++ Express Edition 2008
- Newton Game Dynamics 2.xx
Regeln zur Programmierung:
Regel 1: Die Programmiersprache hat keine Fehler.
Regel 2: Solltest du doch einen Fehler finden, tritt automatisch Regel 1 in Kraft.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Compilerproblem
BeitragVerfasst: 22.05.2009, 20:50 
Offline

Registriert: 21.05.2009, 23:10
Beiträge: 17
Und wie mach ich das? Ich hab ja momentan den Pointer smgr, der wird aber in der xyz.cpp nicht erkannt wenn er in der main.cpp deklariert wird

Edit: "extern" war das Stichwort das ich nicht kannte. Funktioniert jetzt wie es soll.

Ich danke dir für deine Hilfe!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de