变量用于保存二维对象数组

时间:2018-02-08 21:38:51

标签: c++

我在ClassA中创建了一个myOwnClass的二维数组

i18n-tasks-use

如何在另一个可以指向此数组的类(ClassB)中创建变量。

如果我定义了一维数组  class classA { public: myOwnClass* myArray[2][16]; } 我可以像这样定义一个变量来保存数组myOwnClass* myArray[16],所以一维数组的一切工作都很好,但我无法使用二维数组。我试图将变量定义为myOwnClass** myArrayPointer,但这显然不起作用。

3 个答案:

答案 0 :(得分:2)

  

但我无法使用二维数组。我试图将变量定义为myOwnClass *** myArrayPointer,但这显然不起作用。

数组和指针是不同的东西,只有在最外层,数组才会衰减到指针。因此,在您的情况下,该变量的第二级类型不是指针,它是一个包含16个元素的数组。

使用此:

myOwnClass* (*my_another_var)[16] = some_instance.myArray;

答案 1 :(得分:2)

#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;
};

答案 2 :(得分:0)

您可以使用:

struct classB
{
    myOwnClass* (*pClassArray)[2][16];  
};

像这样初始化:

classA a;    // ..init a.myArray;
classB b;
b.pClassArray = &a.myArray;

并使用它:

cout << (*b.pClassArray)[i][j] << " ";

enter image description here