2012-04-02 29 views
6

Co jeśli chcę mieć tablicę wskaźników do funkcji, a rozmiar tablicy nie jest znany od początku? Jestem ciekawy, czy jest jakiś sposób na zrobienie tego. Używanie nowego oświadczenia lub może czegoś innego. Coś się podobny doJak dynamicznie tworzyć tablicę funkcji?

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

Odpowiedz

8

można użyć std::vector:

#include <vector> 

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

Jeśli naprawdę chcesz użyć statycznej tablicy, lepiej byłoby to zrobić za pomocą FunPointer I określonych we fragmencie powyżej :

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

Chociaż nadal chciałbym wybrać rozwiązanie wektorowe, biorąc pod uwagę, że nie znasz rozmiaru tablicy podczas kompilacji i czasu t używasz C++ i nie C

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

lub

#include <vector> 

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

Z typedef, nowy wyraz jest trywialny:

typedef void(*F)(void*); 

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

Bez typedef, jest nieco trudniejsze:

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

    if(testArray[3]) testArray[3](0); 
} 
Powiązane problemy