我知道您可以使用以下方法将多维数组传递给函数:
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
有人可以澄清为什么会这样吗?
答案 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
}