可容纳二维对象数组的变量



我在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] << " ";

糟糕的实时演示

最新更新