0

好吧,我确实知道如何从函数返回二维数组:

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;}

?

4

3 回答 3

2

通过使用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.

于 2013-04-11T10:57:51.380 回答
2

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; }
};
于 2013-04-11T10:59:37.073 回答
1

之前int

const int (*getB() const)[5] {return b;}
于 2013-04-11T10:48:34.157 回答