Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从常量成员函数返回引用数组_C++_Multidimensional Array_Reference - Fatal编程技术网

C++ 从常量成员函数返回引用数组

C++ 从常量成员函数返回引用数组,c++,multidimensional-array,reference,C++,Multidimensional Array,Reference,如何从常量成员函数返回数组引用 class State{ Chips (&arr() const)[6][7] { return arr_; } Chips val() const { return val_; } } 从“const Chips[6][7]”类型的表达式初始化“Chips(&)[6][7]”类型的引用无效 谢谢。语法正确,但是如果arr\ucode>是该类的直接成员(可能是),那么您就不能将非成本引用返回给该成员。在上述arr方法中,成员arr被视为具

如何从常量成员函数返回数组引用

class State{
    Chips (&arr() const)[6][7] { return arr_; }
    Chips val() const { return val_; }
}
从“const Chips[6][7]”类型的表达式初始化“Chips(&)[6][7]”类型的引用无效


谢谢。

语法正确,但是如果
arr\ucode>是该类的直接成员(可能是),那么您就不能将非成本引用返回给该成员。在上述
arr
方法中,成员
arr
被视为具有
const芯片[6][7]
类型。无法使用此类型初始化
Chops(&)[6][7]
类型的引用,因为它会破坏常量的正确性。为了编译上述内容,您还需要在返回的引用上使用
const

...
const Chips (&arr() const)[6][7] { return arr_; }
...
但无论如何,使用typedef会让你过得更好

...
typedef Chips Chips67[6][7];
const Chips67 &arr() const { return arr_; }
...

您需要将函数指定为返回一个指针。所以

Chips* arr() const;

这就是您要找的。

预期的';'在“筹码”之前在“const”之前,我一开始尝试过,但是我得到了上面的错误
const Chips(&arr()const)[6][7]{return err}
在g++-4.2上运行得非常好,我看不出该语法有任何错误(除了阅读它的复杂性)。你在用什么编译器?(无论如何,typedef几乎是可读性的要求)我没有否决,但否决可能是因为这个答案不能解决问题,也无法编译。返回衰减的指针将是
常量芯片(*arr()const)[7]
(我甚至不确定是否存在)。请注意,只有外部数组可以/将自动衰减为指针,因此如果类型为
int-array[3][4][5]
,则它是一个由3个数组组成的数组,由4个数组组成,由5个整数组成。当它衰减时,它将是一个指向4个数组,由5个整数组成的数组的指针。另外,请注意,问题在于,如果成员方法是const,则返回的元素也必须是const——否则编译器会抱怨。(1)OP不“需要”使函数返回指针(2)您的“解决方案”不起作用(3)OP所要找的不是这个。所以,基本上,这个答案中的一切都是错误的。