2012-04-02 16 views
6

Was ist, wenn ich ein Array von Zeigern zu einer Funktion haben möchte und die Größe des Arrays nicht von Anfang an bekannt ist? Ich bin nur neugierig, ob es einen Weg gibt, das zu tun. Neue Aussage oder etwas anderes verwenden. Etwas suchen ähnlich wieWie man ein Array von Funktionen dynamisch erstellt?

void (* testArray[5])(void *) = new void()(void *); 

Antwort

8

Sie ein std::vector verwenden:

#include <vector> 

typedef void (*FunPointer)(void *); 
std::vector<FunPointer> pointers; 

Wenn Sie wirklich ein statisches Array verwenden möchten, wäre es besser, es zu tun, um die FunPointer mit i oben im Snippet definiert :

FunPointer testArray[5]; 
testArray[0] = some_fun_pointer; 

Obwohl ich immer noch für die Vektor Lösung gehen würde, zu berücksichtigen, dass Sie nicht die Größe des Arrays während der Kompilierung und tha wissen t Sie C++ verwenden und nicht C.

1
for(i=0;i<length;i++) 
A[i]=new node 

oder

#include <vector> 

std::vector<someObj*> x; 
x.resize(someSize); 
5

Mit typedef ist der neue Ausdruck trivial:

typedef void(*F)(void*); 

int main() { 
    F *testArray = new F[5]; 
    if(testArray[0]) testArray[0](0); 
} 

Ohne typedef, es ist etwas schwieriger:

void x(void*) {} 
int main() { 
    void (*(*testArray))(void*) = new (void(*[5])(void*)); 
    testArray[3] = x; 

    if(testArray[3]) testArray[3](0); 
} 
Verwandte Themen