31. august 2001 - 14:27
Der er
9 kommentarer og 1 løsning
Returnering af pointer til funktion
Davs... Jeg har en private i min klasse: void (*Entry)(...); Og denne private ville jeg egentlig gerne have returneret v.hj.a. en public funktion. Jeg skal altså bruge en funktion, der returnerer en pointer til en funktion med et ikke givet antal variable. Hvordan gør jeg det? Ting, der ikke virker: void()(...) *GetEntry(); // syntax error: \'void(\' void(*)(...) GetEntry(); // syntax error: \')\' void(*GetEntry)(...) (); // function returns function osv... :-(
Annonceindlæg fra HP
31. august 2001 - 14:34
#1
Du skal caste den til et eller andet, fx. int. void* vp; int GetPointer() { return (int*) vp; } /wisen
31. august 2001 - 14:39
#2
Spørgsmålet var ikke, hvordan jeg implementerede den, men hvordan jeg deklarerer den i min klasse. I funktionen skal jeg bare skrive: return Entry; Iøvrigt er forklaringen på den sidste fejlbesked: A function cannot return a function - a function can return a ->pointer<- to a function. Men ligemeget, hvor jeg sætter flere stjerner får jeg andre compiler fejl.
31. august 2001 - 14:41
#3
Desuden caster du til en int pointer, men skal returnere en int. Et råd: Test den kode af, du poster - medminder du er bombesikker på, at den er rigtig. Eller skrive i det mindste, at du ikke har testet det :-)
31. august 2001 - 14:42
#4
Hvad så med det her : void* pv; void Test(void** ppv) { ppv = pv*; } void* Getpv; Test(Getpv);
31. august 2001 - 14:43
#5
Ja, int\'en var en slåfejl :)
31. august 2001 - 14:45
#6
Fuc* det går ikke særligt godt : void Test(void** ppv) { ppv = &pv; }
31. august 2001 - 14:48
#7
Det er dælme fredag, nu går jeg sgu hjem; bare glem det :)
02. september 2001 - 12:29
#8
Måske kan du bruge datatypen \"FARPROC\" istedet for en void-pointer og derved undgå alle disse problemer :) Derudover kan du jo også bare lave din variabel være public; hvis du alligevel udleverer pointeren, er der jo ingen grund til at indkapsle den, vel...
03. september 2001 - 09:36
#9
Jeg har fået svaret i et andet messageboard: void (*GetEntry())(...); Og desuden er der da en meget god grund til ikke at lave den public. Hvis man gør det, kan andre klasser skrive til den, hvilket ikke er tilfældet med denne konstruktion. En anden ting er så, at jeg jo bare kunne have returneret en void pointer, da jeg jo alligevel skal caste bagefter.
03. september 2001 - 10:34
#10
Hmm, ok....
Kurser inden for grundlæggende programmering