好吧,我确实知道如何从函数返回二维数组:
struct S
{
int a[3];
int b[4][5];
int const *getA() const {return a;}
int (*getB())[5] {return b;}
};
问题是:如何返回常量二维数组?我应该const
在哪里排队
int (*getB())[5] {return b;}
?
好吧,我确实知道如何从函数返回二维数组:
struct S
{
int a[3];
int b[4][5];
int const *getA() const {return a;}
int (*getB())[5] {return b;}
};
问题是:如何返回常量二维数组?我应该const
在哪里排队
int (*getB())[5] {return b;}
?
通过使用std::array
:
struct S
{
using arrayA_type = std::array<int, 3>;
using arrayB_type = std::array<std::array<int, 5>, 4>;
arrayA_type a;
arrayB_type b;
const arrayA_type& getA() const { return a; }
const arrayB_type& getB() const { return b; }
};
当然,您可以使用普通的原始数组来代替,但是如果您使用类型别名会更容易,换句话说,不要混淆将const
.
std::array
通过使用(std::tr1::array
或者boost::array
如果您没有 C++11 支持)来简化整个事情。这些类型是可复制、可分配的,并且它们的参考语法很明确:
#include <array>
struct S
{
std::array<int, 3> a;
std::array<std::array<int, 5>, 4> b;
const std::array<int, 3>& getA() const {return a; }
const std::array<std::array<int, 5>, 4>& getB() const { return b; }
};
之前int
。
const int (*getB() const)[5] {return b;}