c++返回常量2d数组



嗯,我知道如何从函数返回2d数组:

struct S
{
    int a[3];
    int b[4][5];
    int const *getA() const {return a;}
    int (*getB())[5] {return b;}
};

问题是:我如何返回常数 2d数组?我应该把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::arrayboost::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;}

相关内容

  • 没有找到相关文章

最新更新