Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何动态创建函数数组?_C++_Function Pointers - Fatal编程技术网

C++ 如何动态创建函数数组?

C++ 如何动态创建函数数组?,c++,function-pointers,C++,Function Pointers,如果我想要一个指向函数的指针数组,而数组的大小从一开始就不知道该怎么办?我只是好奇是否有办法做到这一点。使用新语句或其他东西。类似于 void (* testArray[5])(void *) = new void ()(void *); 您可以使用std::vector: #include <vector> typedef void (*FunPointer)(void *); std::vector<FunPointer> pointers; 虽然我不太了解向量

如果我想要一个指向函数的指针数组,而数组的大小从一开始就不知道该怎么办?我只是好奇是否有办法做到这一点。使用新语句或其他东西。类似于

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

您可以使用
std::vector

#include <vector>

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

虽然我不太了解向量解,但在编译时,你不知道数组的大小,你使用C++而不是C.</P> <代码>(i=0;i带代码> TyPulf,新表达式是平凡的:

for(i=0;i<length;i++)
A[i]=new node
typedef void(*F)(void*);

int main () {
  F *testArray = new F[5];
  if(testArray[0]) testArray[0](0);
}
如果没有
typedef
,则更难:

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

  if(testArray[3]) testArray[3](0);
}
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);
}