Funktionszeiger auf Funktion in gleicher Klasse?



  • Hallo,

    ich arbeite gerade an einer Class Library mit c++ und .Net und komme an einer Stelle nicht weiter. Ich benötige eine Funktionszeiger auf eine callback - Funktion, der Funktionszeiger muss in der gleichen Klasse verfügbar sein, in der die Funktion steht.

    public ref class Acquisition{
    
        public:
    
        void callbackc(IplImage * img){
            currentImage = img;
        }
        .
        .
        .
        void initializeCam(...){
            .
            .
            .
            void (*ptr)(IplImage *) = &Acquisition::callback;
            cvcamSetProperty(currentCam, CVCAM_PROP_CALLBACK,void ptr);}
    
        private:
            IplImage * currentImage;
    }
    

    So gehts irgendwie nicht. Sobald ich die Funktion aus der Klasse packe, sodass sie nurnoch im namespace steht, gehts, aber dann kommt die Funktion nicht mehr an die Variablen in der Klasse dran. Habs dann mit ner static Variable außerhalb der Klasse probiert, aber da hat er mir jedesmal anscheinend nur irgendeinen willkürlichen Speicherbereich reingeschrieben.
    Bitte helft mir!

    mfg



  • Das

    Armageddon980 schrieb:

    public ref class Acquisition{
    
        public:
    
        void callbackc(IplImage * img){
            currentImage = img;
        }
    

    ist eine Methode, dies hingegen

    Armageddon980 schrieb:

    void (*ptr)(IplImage *)
    

    ist ein Funktionszeiger. Eine Methode hat im Gegensatz zu einer Funktion aber einen zusätzlichen impliziten Parameter, der innerhalb ihrer selbst als "this" ansprechbar ist.

    Für Methoden verwendet man naheliegenderweise nicht Funktions-, sondern Methodenzeiger. Google ist hierbei recht ergiebig.


Anmelden zum Antworten