2012-04-02 18 views
6

関数へのポインタの配列を取得したいが、配列のサイズが最初から分かっていない場合はどうすればよいですか?私はそれをする方法があるのか​​不思議です。新しいステートメントを使うか、それとも別のものを使う。あなたが使用することができ機能の配列を動的に作成する方法は?

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

答えて

8

に似たもの探しstd::vector

#include <vector> 

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

あなたが本当に静的配列を使用したい場合は、私が上記のスニペットで定義されたFunPointerを使用して行う方が良いでしょう:

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

私はまだコンパイル時に配列のサイズがわからないことを考慮して、あなたがC++を使用してtypedefではないC.

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

または

#include <vector> 

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

さtは、新しい表現が簡単です:typedefなし

typedef void(*F)(void*); 

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

、それはややより困難である。

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

    if(testArray[3]) testArray[3](0); 
} 
関連する問題