我在类中有一个变量声明为已知大小的编译时常量:
static const int array[5][5]; // constants initlialised in another place
以及一个虚拟返回它的函数:
virtual const int** getArray() { return array; }
如何使用这种方法获取这个数组,并将其转换为固定大小的数组,而不是基于指针的,所以我可以像使用它一样使用它cout << data[2][2]
?
无法编译的示例:
const int[5][5] data = object->getArray();
cout << data[2][2];
编译但使应用程序崩溃的示例:
const int** data = object->getArray();
cout << data[2][2];
注意:一种解决方案是创建typedef arr[5]
和声明方法,arr*
但我不想为我使用的每个编译时大小创建一个 typedeftypedef arr5[5]; typedef arr10[10]
等等。我正在寻找更多类似的东西:
const int(*)[5] data = object->getArray(); // won't compile, example only
假设编译时常量数组加载了动态 DLL 并且已经在内存中,是否可以将此数据用作数组而不分配新内存并从编译时常量填充它?