我有一个包含6个函数指针的数组:
int (*arrayOfFunPointers[6])();
我现在要做的是在堆中分配该数组
因为我在函数中创建数组并返回指向该数组的指针:
int (*(*fun2())[6])(){
int (*funPointer)();
int (*arrayOfFunPointers[6])();
int (*(*pointerToArrayOfFunPointers)[6])();
funPointer = &fun;
arrayOfFunPointers[0] = funPointer;
pointerToArrayOfFunPointers = &arrayOfFunPointers;
return pointerToArrayOfFunPointers;
}
在方法之外,arrayOfFunPointers
失去了他的有效区域,返回的指针指向"没有"
我尝试了很多:
int (*arrayOfFunPointers[6])() = new int (*[6])();
或使用typedef:
typedef int (*arrayOfFunPointers[6])();
arrayOfFunPointerss *array = new arrayOfFunPointers;
或通过赋值给返回的指针:
pointerToArrayOfFunPointers = new arrayOfFunPointers;
pointerToArrayOfFunPointers = new arrayOfFunPointers[]; //or
但没有任何作用。
也许我不理解正确使用关键字new
,如果有人能告诉我在哪里犯了一个思维错误,那将会非常有用
有人能帮帮我吗?那会很不错
答案 0 :(得分:3)
您可以使用C ++ 11中的工具简化您的生活。怎么样:
std::array<FunPointer, 6> getFunctions()
{
std::array<FunPointer, 6> result;
// ...
return result;
}
不只是很好吗? Ne需要打扰动态内存,只需复制那些6指针,它相对便宜。