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
|
Verfasst am: 17.10.2008, 21:27 Titel: Zeigerzuweisung |
|
|
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 |
|
|
fkrauthan Junior JLI'ler
Alter: 33 Anmeldedatum: 10.04.2005 Beiträge: 96 Wohnort: Germering Medaillen: Keine
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 17.10.2008, 23:31 Titel: |
|
|
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 |
|
|
David Super JLI'ler
Alter: 39 Anmeldedatum: 13.10.2005 Beiträge: 315
Medaillen: Keine
|
Verfasst am: 18.10.2008, 13:40 Titel: |
|
|
Was ist denn m_Model, und wie sieht die Deklaration von LoadStaticModel aus? |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 19.10.2008, 12:49 Titel: |
|
|
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 |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 19.10.2008, 18:11 Titel: |
|
|
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 |
|
|
OLiver Super JLI'ler
Alter: 33 Anmeldedatum: 29.06.2003 Beiträge: 306 Wohnort: Jena Medaillen: Keine
|
Verfasst am: 20.10.2008, 12:11 Titel: |
|
|
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 |
|
|
|