Problem mit Zeigerübergeben



  • Hi

    ich hab ein problem. ich kopier jetzt net meinen direkten code, da das eh überflüssig ist.
    klasse a hat einen zeiger auf ein objekt. klasse b brauch jetzt auch einen zeiger auf das objekt, aber nur für eine funktion.

    idee: mit funktion zeiger von klasse a holen und per konstruktor an klasse b übergeben.

    soweit so gut.

    RenderWindow* GOgre::getRenderWindow()
    {
    	return mWindow;
    }
    

    das klappt soweit.

    RenderWindow* window = Graphic->getRenderWindow();
    Input = new GInput(&window);
    

    Input ist ne membervariable.

    GInput::GInput(RenderWindow* window) 
    {
    	mWindow = window;
    
    }
    

    mWindow ist dann wieder ne membervariable.

    ansich müsste das ja alles passen mit den typen, aber ich bekomme folgende fehlermeldung:

    1>h:\......\gmain.cpp(19) : error C2664: 'GInput::GInput(Ogre::RenderWindow *)': Konvertierung des Parameters 1 von 'Ogre::RenderWindow **__w64 ' in 'Ogre::RenderWindow *' nicht möglich

    wie kommt es dazu das window vom typ renderwindow** ist? ich hab doch eig. nur ein *

    MfG
    Eldarion



  • window ist vpm Typ RenderWindow*, also schon der Typ, den die Funktion da verlangt(einen Zeiger)
    Du tust dir aber von dem Zeiger die Adresse holen(also faktisch dann ein Zeiger auf nen Zeiger, halt das **)
    ergo lass einfach das & weg



  • oh sry, ich hattes vorher schonmal ohne & probiert und da gings nicht. das kam mir auch iwie spanisch vor, aber nen versuch wars wert. ich habe jetzt wohl noch was anderes geändert. es geht jetzt. danke. 🙂


Anmelden zum Antworten