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!