Dynamisches Array von Funktionszeigern

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 :wink:

Grüße

CMБ

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Danke!
Vielen Dank euch beiden!