C++ 变量来保存二维对象数组

C++ 变量来保存二维对象数组,c++,C++,我在ClassA中创建了myOwnClass的二维数组 class classA { public: myOwnClass* myArray[2][16]; } 如何在另一个类(ClassB)中创建一个可以指向此数组的变量 如果我定义了一维数组 myOwnClass*myArray[16] 我可以这样定义一个变量来保存数组myOwnClass**myArrayPointer,这样在一维数组中一切都可以正常工作,但在二维数组中却无法正常工作。我试图将变量定义为myOwnClass

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

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;
但我不能让它与二维数组一起工作。我试图将变量定义为myOwnClass***myArrayPointer,但这显然不起作用

数组和指针是不同的东西,只有在最外层,数组才会衰减为指针。在您的例子中,该变量的第二级类型不是指针,而是16个元素的数组

使用以下命令:

myOwnClass* (*my_another_var)[16] = some_instance.myArray;
您可以使用:

struct classB
{
    myOwnClass* (*pClassArray)[2][16];  
};
按如下方式初始化它:

classA a;    // ..init a.myArray;
classB b;
b.pClassArray = &a.myArray;
并使用它:

cout << (*b.pClassArray)[i][j] << " ";
cout您可以使用:

struct classB
{
    myOwnClass* (*pClassArray)[2][16];  
};
按如下方式初始化它:

classA a;    // ..init a.myArray;
classB b;
b.pClassArray = &a.myArray;
并使用它:

cout << (*b.pClassArray)[i][j] << " ";
cout
#包括
甲级
{
公众:
//给它起个友好的名字。
使用MyArray\u t=std::array;
//现在,您可以像使用类型一样使用该名称。
MyArray\u t MyArray;
};
B类
{
ClassA::MyArray_t*arrayPtr=nullptr;
};
#包括
甲级
{
公众:
//给它起个友好的名字。
使用MyArray\u t=std::array;
//现在,您可以像使用类型一样使用该名称。
MyArray\u t MyArray;
};
B类
{
ClassA::MyArray_t*arrayPtr=nullptr;
};

目前来看,myArray
看起来像一个三维数组(或者至少是指向二维数组的指针)。那颗星是打字错误吗?另外,要当心,你正在误入歧途。特别是如果你在C++中,我会建议<代码> STD::向量< /代码>s@scohe001不,这是一个二维指针数组。@juanchopanza+1,你说得对,我的分析不好。仍然认为它可能是一个三维数组。变量来容纳一个二维数组的对象——在继续之前,你知道二维数组的对象是什么吗?它当然不是对象。您使用“原始”C样式数组而不是C++样式有什么特别的原因吗?或者,就目前而言,
myArray
看起来像一个三维数组(或者至少是指向二维数组的指针)。那颗星是打字错误吗?另外,要当心,你正在误入歧途。特别是如果你在C++中,我会建议<代码> STD::向量< /代码>s@scohe001不,这是一个二维指针数组。@juanchopanza+1,你说得对,我的分析不好。仍然认为它可能是一个三维数组。变量来容纳一个二维数组的对象——在继续之前,你知道二维数组的对象是什么吗?当然,它不是对象。你使用“原始”C样式数组而不是C++风格还是“托马斯”完美,有什么特别的原因吗?这是有效的!“不需要太多的准备好的C++代码,相信我!”你是不是在随机地否决别人的答案?@liliscent肯定不是“随机”的。没有比这更糟糕的建议了。(撇开无数受骗者不谈)答案是回答问题,而不是做建议。OP在复杂的指针声明方面存在问题,我给出了合理的解释,解决了OP提出的问题。如果你的标准让你否决了这样的答案,我认为它比随机的还要糟糕。“我认为,我不会认为这是一个规范的,并且是一个C++语言问题的惯用解决方案。现在需要对原始C样式数组或原始指针的使用提出苛刻的要求。@托马斯“完美,这是有效的!”,对于严肃的生产准备好的C++代码来说,不是很远,相信我!你是不是在随机地否决别人的答案?@liliscent肯定不是“随机”的。没有比这更糟糕的建议了。(撇开无数受骗者不谈)答案是回答问题,而不是做建议。OP在复杂的指针声明方面存在问题,我给出了合理的解释,解决了OP提出的问题。如果你的标准让你否决了这样的答案,我认为它比随机的还要糟糕。“我认为,我不会认为这是一个规范的,并且是一个C++语言问题的惯用解决方案。现在需要有严格的要求来解释使用原始c样式数组或原始指针的原因,尽管我不喜欢那种只回答代码的样式。我在这里投赞成票,因为它正好反映了我所拥有的。尽管我不喜欢那种只回答代码的风格。我在这里投赞成票,因为这正好反映了我所做的。