从const成员函数返回引用数组

时间:2010-09-16 05:56:11

标签: c++ multidimensional-array reference

如何从const成员函数返回数组引用?

class State{
    Chips (&arr() const)[6][7] { return arr_; }
    Chips val() const { return val_; }
}

'const Chips [6] [7]'

类型表达式'Chips(&)[6] [7]'类型的引用初始化无效

谢谢。

2 个答案:

答案 0 :(得分:7)

你的语法是正确的,但是如果arr_是该类的直接成员(并且它可能是),那么你根本无法向该成员返回非成本引用。在上述arr方法中,成员arr_被视为具有const Chips[6][7]类型。您不能使用此类型初始化Chops (&)[6][7]类型的引用,因为它会破坏const正确性。为了进行上述编译,您还需要在返回的引用上使用const

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

但无论如何,使用typedef

你会好得多
...
typedef Chips Chips67[6][7];
const Chips67 &arr() const { return arr_; }
...

答案 1 :(得分:-2)

您需要将该函数指定为返回Chips指针。所以,

Chips* arr() const;

您在寻找什么。