我有一个类,在构造函数中获得一个三维结构数组。为了进一步计算,它还需要每个维度的长度。
一个简短的例子:
MyStruct*** mySt;
mySt = new MyStruct**[5]
mySt[0] = new MyStruct*[4]
mySt[0][0] = new MyStruct[3]
我怎么能得到这些值(5,4,3)回来保存它们在新的类没有显式地发送给构造函数?
你不能从用new
分配的普通c++数组中获取数组的大小,并将其存储为指针:没有语言结构允许你检索数组的大小。
处理这种情况有两种选择:
- 在c++中使用支持大小调整的容器-例如,
std::vector
of vector of vector,或者 - 在C中(或者在c++中,如果你喜欢用数组)构造一个单独的大小的3D数组,并将其与
mySt
数组一起传递。