Avatar billede zerohero Nybegynder
01. marts 2005 - 14:03 Der er 3 kommentarer

Pointer til en funktion fra en klasse!

Hvordan definere man en pointer der skal pege paa en funktion fra en klasse?

Mit foerste gaet var noget lign.:

typedef class void(*FUNCTION)();

men det virker ikke!
Avatar billede arne_v Ekspert
01. marts 2005 - 14:54 #1
Du kan kun sende en C function eller en C++ class static method med over som
function pointer.
Avatar billede arne_v Ekspert
01. marts 2005 - 14:55 #2
Eksempel på workaround:

#include <iostream>

using namespace std;

#include <windows.h>

DWORD __stdcall dispatcher(void *p);

class X
{
    private:
        int v;
    public:
    X(int v) { this->v = v; };
    void Doit() { cout << v << endl; };
    void Start() { HANDLE h = CreateThread(NULL,0,dispatcher,this,0,NULL);
                  WaitForSingleObject(h,INFINITE); }
};

DWORD __stdcall dispatcher(void *p)
{
    X *x = (X *)p;
    x->Doit();
    return 0;
}

int main()
{
    X *x = new X(123);
    x->Start();
    return 0;
}
Avatar billede zerohero Nybegynder
02. marts 2005 - 11:12 #3
Jeg har proevet mig lidt frem og fandt ud af at...

typedef void (KLASSE::*FUNKTION)();

burde virke korrekt!
Men om det er den "Rigtige" loesning er jeg ikke helt sikker paa!

Arne>> Dit eksempel ser lidt kompliceret ud for mig! :(
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