在类之间传递多维数组

时间:2014-02-19 16:56:30

标签: c++ multidimensional-array compiler-errors parameter-passing

我知道您可以使用以下方法将多维数组传递给函数:

void Class1::foo(Bar bars[][10])
{
   // Do stuff
}

并且您可以使用以下命令返回指向一维数组中第一个成员的指针:

Bar* Clas2::getBars()
{
   return bars;  //Where bars is a member of a class
}

但是当'bars'是一个多维数组时,我得到错误:

Cannot convert Bar (*)[10] to Bar* in return

有人可以澄清为什么会这样吗?

2 个答案:

答案 0 :(得分:1)

你应该按照编译器说的那样写

Bar (*)[10] Clas2::getBars()
{
   return bars;  //Where bars is a member of a class
}

你说的正确“你可以返回指向..数组中第一个成员的指针”。二维数组的成员或更精确的元素是Bar [10]类型的一维数组。 指向此元素的指针将显示为Bar (*)[10]

哦,我很抱歉确实应该是

Bar (* Clas2::getBars() )[10]
{
   return bars;  //Where bars is a member of a class
}

或者您可以使用typedef。例如

typedef Bar ( *BarPtr )[10];
BarPtr Clas2::getBars()
{
   return bars;  //Where bars is a member of a class
}

答案 1 :(得分:0)

您应该使用:

Bar (*Clas2::getBars())[10]
{
    return bars;  //Where bars is a member of a class
}

或更好看的方式:

typedef Bar (*Bar10x10ptr)[10];

Bar10x10ptr Clas2::getBars()
{
    return bars;  //Where bars is a member of a class
}