Null-Zeiger bei Funktionen



  • Hallo

    Ich habe ein kleine Klasse mit dem Namen ButtonToClick. Diese Klasse hat eine Initfunktion:

    void ButtonToClick::Init(const std::string& Caption, unsigned int PosX, unsigned int PosY, boost::function<unsigned int(std::vector<Cube>& Cubes)> Function, unsigned int Position)
    {
    	CaptionText.Init("fonts/FreeSansBold.ttf",22);
    	this->Caption = Caption;
    	this->PosX = PosX;
    	this->PosY = PosY;
    	OwnRect.x = PosX-20;
    	OwnRect.y = PosY-5;
    	OwnRect.w = CaptionText.GetLengthInPixel(Caption) + 10;
    	OwnRect.h = CaptionText.GetTextHeight()+5;
    	this->Function = Function;
    	this->Position = Position;
    }
    

    Ich rufe diese Funktion so auf:

    ButtonsToClick[0].Init("Einsen",250,230,Func[0],0);
    

    Func[0] soll also der Zeiger auf die Funktion sein, die aufgerufen werden soll, wenn ich auf den "Button" klicke.
    Das Array der Zeiger auf Funktion wird so initialisiert:

    ButtonsToClick[0].Init("Einsen",250,230,Func[0],0);
    ButtonsToClick[1].Init("Zweien",250,280,Func[1],1);
    
    ...
    

    Nun ist das Problem, dass wenn ich die Memberfunktion von der Klasse ButtonToClick aufrufe der Zeiger auf die Funktion immer NULL ist. Ich bekomme eine exception und das Programm beendet sich.
    Vieleicht stehe ich ja mal wieder auf dem Schlauch, oder ich verwende die boost-Funktionszeiger falsch. Ich würde mich über Ideen sehr freuen.

    chrische



  • Mit Boost kenne ich mich zwar nicht aus, aber wieso machst du es nicht einfach mit normalen Funktionszeigern? 😕 🙄



  • Du machst eigentlich alles richtig, ich würde sagen der Fehler liegt beim Func-Array. Bau mal ein paar asserts auf Nullzeigercheck ein oder versuch's mit dem Debugger.

    mfg.


Anmelden zum Antworten