JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Zeigerzuweisung

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 17.10.2008, 21:27    Titel: Zeigerzuweisung Antworten mit Zitat

CPP:
m_Model=theResourcesManager.LoadStaticModel(Model->GetAttribute<string>("File"));

cannot convert `StaticModel*' to `BaseModel*' in assignment
CPP:
class StaticModel : public BaseModel
{
public:
   StaticModel();
   ~StaticModel();
   virtual bool Load(std::string Filename);
   virtual void RenderModel();
private:
   //die Meshdaten
   int m_VertexCount, m_IndexCount;
   float *m_Positions, *m_Normals, *m_UVs;
   unsigned int *m_Indices;

   std::list<Submesh> m_Submeshs;
};


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


Alter: 33
Anmeldedatum: 10.04.2005
Beiträge: 96
Wohnort: Germering
Medaillen: Keine

BeitragVerfasst am: 17.10.2008, 22:00    Titel: Antworten mit Zitat

Mach einfach einen C oder C++ Cast davor auf BaseModel* und die sache hat sich...
_________________

"Die Codeschleuder" das Spieleprogrammierer Magazin
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 17.10.2008, 23:31    Titel: Antworten mit Zitat

Naja, aber eigentlich sollte die Zuweisung doch gehen. Ich meine, der Sinn von Polymorphie ist doch irgendwie, das man einen Basiszeiger hat, der sich je nach Objekt anders verhält.
Das es mit einem cast geht, weiß ich, aber ich glaube eigentlich, dass es auch ohne gehen müsste, und deshalb will ich eigentlich keinen "hässlichen" Workaround machen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 18.10.2008, 13:40    Titel: Antworten mit Zitat

Was ist denn m_Model, und wie sieht die Deklaration von LoadStaticModel aus?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


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

BeitragVerfasst am: 19.10.2008, 12:49    Titel: Antworten mit Zitat

CPP:
BaseModel* m_Model;

...


StaticModel* LoadStaticModel(string Filename);

...

class BaseModel
{
public:
   virtual ~BaseModel(){};

   virtual bool Load(std::string Filename) = 0; //der Pfad muss wenn dann ein / am Ende enthalten!
   void Render(Vector3f Position=Vector3f(), Vector3f Rotation=Vector3f(), float Scale=1);
   virtual void RenderModel() = 0;

   std::string GetFilename() {return m_Filename;};
protected:
   std::string m_Filename;

};

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



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

BeitragVerfasst am: 19.10.2008, 18:11    Titel: Antworten mit Zitat

anhand der informationen die du uns gibst sollte das eigentlich kein Problem sein, upcasts sind im ggs zu downcasts ohne weiteres möglich. Was ich mir vorstellen könnte ist ein Problem im Zusammenhang mit "in assignment" (s. Fehlermeldung). Ist zwar unreallistisch, aber probier einfach mal folgendes:
CPP:
StaticModel* pSM = theResourcesManager.LoadStaticModel(Model->GetAttribute<string>("File"));
m_Model = pSM; // unrolled assignment


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


Alter: 33
Anmeldedatum: 29.06.2003
Beiträge: 306
Wohnort: Jena
Medaillen: Keine

BeitragVerfasst am: 20.10.2008, 12:11    Titel: Antworten mit Zitat

Oder ist evtl nicht die Definition, sondern nur die Deklaration der StaticModel - Klasse bekannt (an der Stelle der Zuweisung)?
_________________
http://www.sieder25.org/ (Siedler 2 - Remake)
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