JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

public Klasse und Basisklasse undefiniert
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 14:27    Titel: public Klasse und Basisklasse undefiniert Antworten mit Zitat

Ich habe 2 header Dateien. Zum einen CESceneManager.h:

CPP:
// CESceneNode.h: Schnittstelle für die Klasse CESceneNode.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CESCENENODE_H__DDB95A56_1FF1_41E0_BEE0_6925BF1B9EED__INCLUDED_)
#define AFX_CESCENENODE_H__DDB95A56_1FF1_41E0_BEE0_6925BF1B9EED__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "CESceneManager.h"
#include <list>

namespace Core
{

class CESceneManager;

class CESceneNode : public CESceneManager
{
public:
   CESceneNode();
   virtual ~CESceneNode();

   void AddNode(char* cTest);

   void UpdateNodes(void);

protected:
//   std::list<CESceneNode*>   m_lstNodes;
   char   m_cTest[1024];
};

};
#endif // !defined(AFX_CESCENENODE_H__DDB95A56_1FF1_41E0_BEE0_6925BF1B9EED__INCLUDED_)


und
CPP:
// CESceneNode.h: Schnittstelle für die Klasse CESceneNode.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CESCENENODE_H__DDB95A56_1FF1_41E0_BEE0_6925BF1B9EED__INCLUDED_)
#define AFX_CESCENENODE_H__DDB95A56_1FF1_41E0_BEE0_6925BF1B9EED__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "CESceneManager.h"
#include <list>

namespace Core
{

class CESceneManager;

class CESceneNode : public CESceneManager
{
public:
   CESceneNode();
   virtual ~CESceneNode();

   void AddNode(char* cTest);

   void UpdateNodes(void);

protected:
//   std::list<CESceneNode*>   m_lstNodes;
   char   m_cTest[1024];
};

};
#endif // !defined(AFX_CESCENENODE_H__DDB95A56_1FF1_41E0_BEE0_6925BF1B9EED__INCLUDED_)


Soweit nichts wildes. Beim kompilieren bekomme ich jedesmal error C2504: 'CESceneManager' : Basisklasse undefiniert
obwohl doch die Klasse CESceneManager eigentlich bekannt sein müsste..?!?!

Danke schonmal für Hilfe!!!
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 14:57    Titel: Antworten mit Zitat

Hast du schonmal versucht die Forward-Deklarationen wegzulassen?
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Dragon
Super JLI'ler


Alter: 38
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 14:59    Titel: Antworten mit Zitat

CPP:
[...]
namespace Core
{

class CESceneManager;

class CESceneNode : public CESceneManager
{
public: [...]


Du hast es doch schon als Include eingebunden, also warum diese Zeile Wink

Edit: F***, da war jemand schneller Rolling Eyes
_________________
Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 15:07    Titel: Antworten mit Zitat

Hatte ich auch erst gedacht, ist aber nicht so, selbst wenn die Forward-Deklaration draußen ist, kommt der Fehler...
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
PeaceKiller
JLI Master


Alter: 36
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 15:32    Titel: Antworten mit Zitat

CPP:
Core::CESceneManager
?
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Kampfhund
Super JLI'ler


Alter: 42
Anmeldedatum: 20.07.2002
Beiträge: 408

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 15:38    Titel: Antworten mit Zitat

@schneidi: O_o, bin ich blind oder hast du zweimal den gleichen Code gepostet? Ich kann atm jedenfalls keinen Unterschied finden.
_________________
Kochen ist ein NP-schweres Optimierungsproblem.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 15:42    Titel: Antworten mit Zitat

Lol, ich nehme an, du hast unbeabsichtigt 2x denselben Header gepostet. Wink

Kann sein, dass ich mich täusche, aber eine Vorwärtsdeklaration, dürfte doch nicht mit einer Definition gleichzusetzen sein.
Ein Funktionsprototyp ist ja auch lediglich eine Deklaration und noch keine Definition.
In diesem Falle hätte der Compiler recht, die Klasse ist nicht definiert, lediglich deklariert.
Aber keine Gewähr für Richtigkeit.

Irgendwo erscheint mir das Verhalten des Compilers auch logisch.
(Der Compiler kann beim konstruieren der abgeleiteten Klasse ja noch nichts konkretes über die Basisklasse wissen, was er theoretisch aber müsste. Wink)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 15:45    Titel: Antworten mit Zitat

Hups tatsächlich... ich depp...
Hier der richtige Code der SceneManager Klasse:
CPP:
// CESceneManager.h: Schnittstelle für die Klasse CESceneManager.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CESCENEMANAGER_H__F3AD16CF_966B_4A3D_BEDE_959E0B3161F9__INCLUDED_)
#define AFX_CESCENEMANAGER_H__F3AD16CF_966B_4A3D_BEDE_959E0B3161F9__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "CESceneNode.h"
#include "LogFile.h"
#include <list>
#include <vector>
#include <assert.h>

namespace Core
{

class CESceneNode;

typedef std::list<CESceneNode*>   SceneNode;

class CESceneManager 
{
public:
   CESceneManager();
   virtual ~CESceneManager();

   void AddTestNode(CESceneNode* pChild);
   void GetNumNodes(void);
   void UpdateAllNodes(void);

   CLogFile      m_Log;

protected:
//   std::vector<CESceneNode*>   m_vecSceneNode;
   SceneNode               m_vecSceneNode;
   CESceneNode*            m_pRoot;
};

};

#endif // !defined(AFX_CESCENEMANAGER_H__F3AD16CF_966B_4A3D_BEDE_959E0B3161F9__INCLUDED_)


Kommt vermutlich daher, das ich sehr gefrustet bin von dem Ding Very Happy

@Greven: denke das ist durch meinen missglückten post etwas undeutlich geworden, aber ich inlude ja die Klasse SceneManager, wo die ganze Deklarationsgeschichte drin ist...
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 01.11.2005, 16:02    Titel: Antworten mit Zitat

Liegt sicher an den namespace, die Teile sind sau gefährlich und machen nur Probleme in der kombo Quell&Header Datei, wenn es geht vermeide das.

Zu deinem Problem: erstelle mal kleine testklassen ohne besonderheiten daran lässt sich ein solcher Fehler viel einfacher finden.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 16:09    Titel: Antworten mit Zitat

Leider war's das auch nicht Greven, hab die ganzen namespaces rausgemacht (war zum Glück nur in den 2 Klassen, da ich das wie du schon sagst, zum testen noch recht klein gehalten habe).

Funkt aber trotz allem nicht... gleicher Fehler...
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 16:11    Titel: Antworten mit Zitat

Glaube nicht das es an den Namespaces liegt. Habe eigentlich auch noch nie Probleme damit gehabt, dennoch solltest du dir angewöhnen, bei eigenen Typen immer den kompletten Namensraum mit anzugeben.

Bsp.:
CPP:
class CESceneNode : public Core::CESceneManager


Das Zugreifen auf den globalen Namespace würde ich mir aber zumindest bei Funktionsdeklaration verkneifen, VC macht da Ärger. Wink


Ich denke, es liegt viel eher daran, dass du Instanzen deiner SceneNode-Klasse in deiner Manager-Klasse verwendest, jedoch SceneNodes von Manager ableitest.
Spricht zwar eigentlich nichts dagegen, aber leuchtet mir ein, dass das beim kompilieren nicht ganz unproblematisch ist.
Eigentlich müsstest du dir das Einbinden der 'CESceneNode.h' in deiner 'CESceneManager.h' sparen können.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 01.11.2005, 16:12    Titel: Antworten mit Zitat

Was genau ist:

Code:
SceneNode               m_vecSceneNode;


?
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 16:13    Titel: Antworten mit Zitat

Fallen hat Folgendes geschrieben:
Was genau ist:

Code:
SceneNode               m_vecSceneNode;


?


CPP:
typedef std::list<CESceneNode*>   SceneNode;
Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 16:18    Titel: Antworten mit Zitat

richtig.... Laughing
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
schneidi74
Senior JLI'ler



Anmeldedatum: 14.05.2004
Beiträge: 243

Medaillen: Keine

BeitragVerfasst am: 01.11.2005, 19:28    Titel: Antworten mit Zitat

Was ich sehr lustig finde:
wenn ich class als friend mit einbinde, kennt er sie seltsamerweise. Nur mit dem public scheiterts....

Ich glaub ich töte gleich meinen PC.... Evil or Very Mad
_________________
-+- SchNeiDi74 -+-
-+- www.creative-games.de -+-
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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