klasse als handler.



  • kann man ein objekt einer klasse als handler verwenden?
    denn bei mir kommt immer

    glutMotionFunc(minput.cbmpos);

    error C3867: "input::cbkeydn": Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie "&input::cbkeydn", um einen Zeiger auf den Member zu erstellen.

    wieso klappt das nicht

    hier noch die klasse:

    class input{
    private:
    bool asciikey[256];
    bool skey[32];
    int mouseb;
    int mousex;
    int mousey;
    public:
    bool getkeyp(int key){
    return asciikey[key];
    }
    bool getskeyp(int key){
    return skey[key];
    }
    int getmposx(){
    return mousex;
    }
    int getmposy(){
    return mousey;
    }
    int getmouseb(){
    return mouseb;
    }
    void cbkeydn(unsigned char key, int xx, int yy) {
    asciikey[key]=true;
    }
    void cbkeyup(unsigned char key, int xx, int yy) {
    asciikey[key]=false;

    }

    void cbskeyup(int key, int x, int y) {
    }
    void cbskeydn(int key, int x, int y) {
    }
    void cbmbut(int button, int state, int x, int y) {
    }
    void cbmpos(int x,int y) {

    }

    };



  • Erstens hat der Compiler Recht und es fehlt ein &.

    Zweitens geht das so ohne weiteres nicht, weil ein Methodenzeiger kein Funktionszeiger ist.



  • glutMotionFunc(&minput.cbmpos);
    klappt auch nicht.

    wie soll ich das dann lösen?



  • Lies, was ich unter zweitens geschrieben habe 😉

    Du könntest es vielleicht mit boost:bind probieren.



  • Mein Rat: Vergiss GLUT. C++ und GLUT sind wie Feuer und Wasser.
    Leider kenn ich keine wirklich bessere Alternative. Mein Rat wär, dir für das Windowing System mit dem du im Moment arbeitest einfach selbst eine OpenGL Anbindung zu schreiben. Nicht viel Arbeit und potentiell sehr lehrreich.



  • ok, ich hab jetzt alles static, und es geht, trozdem danke



  • dot schrieb:

    Mein Rat: Vergiss GLUT. C++ und GLUT sind wie Feuer und Wasser.
    Leider kenn ich keine wirklich bessere Alternative. Mein Rat wär, dir für das Windowing System mit dem du im Moment arbeitest einfach selbst eine OpenGL Anbindung zu schreiben. Nicht viel Arbeit und potentiell sehr lehrreich.

    +1


Anmelden zum Antworten