我有一个包含 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
的用法,如果有人能告诉我我在哪里犯了思维错误,那将非常有帮助
谁能帮帮我?那该多好
最佳答案
您可以使用 C++11 中的工具简化您的生活。关于:
std::array<FunPointer, 6> getFunctions()
{
std::array<FunPointer, 6> result;
// ...
return result;
}
这不是很好吗?不需要为动态内存操心,只需复制这 6 个指针,它相对便宜。
关于c++ - 在堆中创建一个函数指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48825068/