Hallo!
Ich möchte ein dynamisches Array von Funktionszeigern generieren. Mein Versuch ist folgender:
class Klasse2
{
public:
Klasse2(int i);
float (\*array) ();
};
Klasse2::Klasse2(int i)
{
array=new (\*float[i])();
}
Leider schlägt er fehl. Was muss ich ändern, damit es funktioniert?
Falk
typedef FTW! Die Syntax von Funktionspointern kann ich mir nie merken, deshalb:
typedef float (\*fparray\_t)();
int main( void ) {
fparray\_t \*array = new fparray\_t[10];
//...
delete[] array;
}
Hallo!
Ich möchte ein dynamisches Array von Funktionszeigern
generieren. Mein Versuch ist folgender:
…
Leider schlägt er fehl. Was muss ich ändern, damit es
funktioniert?
Was möchtest Du genau damit machen?
Sowas hier (Glaskugel)?
#include
#include
// ein paar Funktionen, die float zurueckliefern
float a\_func(void) { return (float) 'a'; }
float b\_func(void) { return (float) 'b'; }
float c\_func(void) { return (float) 'c'; }
float d\_func(void) { return (float) 'd'; }
// eine Typdefinition, die diesen Funktionen entspricht
typedef float (\*FFPTR)();
class Klasse2 {
FFPTR \* array;
public:
Klasse2 (int size);
float Dispatch(int index) {
return array[index]();
}
};
Klasse2::Klasse2(int size)
{
array = new FFPTR[size];
assert(array != 0);
array[0] = a\_func;
array[1] = b\_func;
array[2] = c\_func;
array[3] = d\_func;
}
int main()
{
Klasse2 k2( 4 );
float r = k2.Dispatch(2);
printf("Klasse returned %f (%c)\n", r, (int)r);
return 0;
}
Grüße
CMБ
Uuups, da war einer schneller …
Na OK, meins ist länger 
Grüße
CMБ
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Danke!
Vielen Dank euch beiden!