Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

29.12.2006, 00:38

Ein Objekt von einer funktion zurückgeben.

Hi

ich hab ein ziemlich mistiges problem :(

ich baue zurzeit etwas mit ogre. und da ich nich alle ogre variablen global machen will hab ich mir eine grafik klasse gebaut. diese soll jetz eine methode haben die mir ein "entity" erzeugt, also ein objekt.
meine idee war:

C-/C++-Quelltext

1
2
3
4
5
Entity* Graphic::CreateEntity(char* Name, char* Mesh)
{
    Entity* ent1 = mSceneMgr->createEntity(Name, Mesh); //Enity erstellten

    return ent1;
}



bloß wenn ich die funktion aufrufe:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
void Object::LoadMesh(char* Name, char* Path)
{
    char GesamtName[50];
    strcpy(GesamtName, Name);
    ogre = mgame.get_Ogre();
    oentity = ogre->CreateEntity(Name, Path);
    onode = ogre->CreateSceneNode(GesamtName);
    onode->attachObject(oentity);
    delete ogre;
};


oentity ist vom typ entity*
onode vom typ SceneNode*
CreateSceneNode is ähnlich wie createentity aufgeabut.

bloß wenn ich das compile passiert folgendes:


1>c:\ogresdk\godrings2\godrings2\object.cpp(10) : error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'Graphic *' akzeptiert (oder keine geeignete Konvertierung möglich)

was muss ich da machen damit das geht?

habt irh ne kluge idee das evtl besser zulösen?

MfG
Eldarion[/cpp]

2

29.12.2006, 01:00

sagst du uns denn noch in welcher Zeile er genau meckert? doppelt auf die Fehlermeldung klicken und er sollte es tuen ;)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

3

29.12.2006, 01:03

bei:

C-/C++-Quelltext

1
    return ent1;


schonma danke im voraus

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

4

29.12.2006, 09:50

Hmm, ich tippe mal dein "orge = mgame.get_Ogre ()" klappt nicht, weil get_Ogre einen Zeiger liefert, ogre aber keiner ist. (weil das die einzige Stelle ist, wo ein Graphic* zugewiesen wird)

Beim "return" kann es den Fehler nicht geben, weil da ja gar keine Zuweisung drin ist.

Sonst sieht das doch schonmal ordentlich aus, aber so wie ich dich verstanden haben, sollte am Ende kein "delete ogre" stehen... oder erzeugt get_Ogre jedesmal eine neue Instanz?

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

5

29.12.2006, 10:18

warte, dann geb ich nochma den Header der objekt klasse hinzu:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
class Object
{
    private:
        Graphic ogre;
        Entity* oentity;
        SceneNode* onode;
    public:
        void LoadMesh(char*, char*);

};


header hab ich jetz ma weggelassen.

msit, hab wohl wirklich den *nach Graphic vergessen^^. es soll deshalb jedes mal geleert werden, weil das mesh ja nur einmal geladen werden muss und dann die große Graphicklasse keinen speicher verbraucht. weil wenn sich die objekte dann summieren, dann geht das ordentlich an den speicher.

MfG
Eldarion

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

6

29.12.2006, 17:37

Es sollte übrigens heisen:

C-/C++-Quelltext

1
Entity* Graphic::CreateEntity( const char* Name, const char* Mesh )


Oder noch viel besser: std::string! :) :P
@D13_Dreinig

Werbeanzeige