Avatar billede wofd Nybegynder
17. oktober 2004 - 17:56 Der er 3 kommentarer

Class member function som argument

Jeg har nu siddet i over to timer og fumlet med denne fejl:

cannot convert parameter 1 from 'void (unsigned char,int,int)' to 'void (__cdecl *)(unsigned char,int,int)'

Jeg har prøvet lidt forskelligt men uden held. Min nuværende kode ser sådan her ud:

class OpenGlWindow
{
public:
    OpenGlWindow();
    void KeyboardFunc (unsigned char key, int x, int y);
}

OpenGlWindow::OpenGlWindow()
{
    void (OpenGlWindow::*f)(unsigned char key, int x, int );
    f=this->KeyboardFunc;
    glutKeyboardFunc(f);
}

på forhånd tak
Avatar billede arne_v Ekspert
17. oktober 2004 - 18:00 #1
Hvad forsøger du at lave ?

Formentligt kan det ikke lade sig gøre. Man kan ikke bruge ikke static metoder
som function pointers.
Avatar billede wofd Nybegynder
17. oktober 2004 - 18:05 #2
Er i gang med en OPenGL motor, men ville gerne lave mine egne funktioner for viise ting i det bibliotek, men jeg bruger nogen variabler i klassen i funktionerne, så de bliver nødt til at være medlemmer.

Alternativet er at lave dem som friends, men i så fald ville jeg helst have dem i et namespcae og så møder jeg samme problem-
Avatar billede wofd Nybegynder
17. oktober 2004 - 18:19 #3
Fandt ud af det.

void (OpenGlWindow::*lpFunc)(unsigned char key, int x, int y) = &OpenGlWindow::KeyboardFunc;

Herefter kan man bare bruge ipFunc som argument
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester