我在classa
中创建了一个二维数组class classA
{
public:
myOwnClass* myArray[2][16];
}
如何在另一个类(classB(中创建一个可以指向此数组的变量。
如果我定义了一个维数阵列 myOwnClass* myArray[16]
我只能定义这样的变量以容纳数组myOwnClass** myArrayPointer
,因此一切都可以在一个维数组中工作正常,但是我无法将其与二维数组一起使用。我试图将变量定义为myOwnClass*** myArrayPointer
,但显然不起作用。
,但我无法将其与二维数组一起使用。我试图将变量定义为MyownClass *** myArraypointer,但这显然不起作用。
数组和指针是不同的东西,只有在最外面的层面,一个数组才会腐烂到指针。因此,就您而言,该变量的第二级类型不是指针,它是16个元素的数组。
使用此:
myOwnClass* (*my_another_var)[16] = some_instance.myArray;
#include <array>
class ClassA
{
public:
// Give it a friendly name.
using MyArray_t = std::array<std::array<myOwnClass, 16>, 2>;
// Now you can use that name as if it were a type.
MyArray_t myArray;
};
class ClassB
{
ClassA::MyArray_t* arrayPtr = nullptr;
};
您可以使用:
struct classB
{
myOwnClass* (*pClassArray)[2][16];
};
这样初始化:
classA a; // ..init a.myArray;
classB b;
b.pClassArray = &a.myArray;
并使用它:
cout << (*b.pClassArray)[i][j] << " ";
糟糕的实时演示