Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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++;返回常数2d数组_C++_Multidimensional Array - Fatal编程技术网

C++ c++;返回常数2d数组

C++ c++;返回常数2d数组,c++,multidimensional-array,C++,Multidimensional Array,我知道如何从函数返回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;} ?在int之前 const int (*getB() const)[5] {return b;}

我知道如何从函数返回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;}

int
之前

const int (*getB() const)[5] {return b;}

int
之前

const int (*getB() const)[5] {return b;}
改为使用:

结构
{
使用arrayA_type=std::array;
使用arrayB_type=std::array;
arrayA_a型;
arrayB_b型;
const arrayA_type&getA()const{return a;}
常量arrayB_type&getB()常量{return b;}
};
当然,您可以使用普通的原始数组,但如果您为其使用类型别名,则会更容易,换句话说,使用以下命令将
常量放置在何处不会产生混淆:

结构
{
使用arrayA_type=std::array;
使用arrayB_type=std::array;
arrayA_a型;
arrayB_b型;
const arrayA_type&getA()const{return a;}
常量arrayB_type&getB()常量{return b;}
};

当然,您可以使用普通的原始数组,但是如果您为其使用类型别名,那么将更加容易,换句话说,不必混淆将
const

放在哪里(或者
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; }
};
#包括
结构
{
std::数组a;
std::数组b;
const std::array&getA()const{return a;}
常量std::array&getB()常量{return b;}
};

通过使用简化整个过程(或
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; }
};
#包括
结构
{
std::数组a;
std::数组b;
const std::array&getA()const{return a;}
常量std::array&getB()常量{return b;}
};

为了您的理智起见,请使用
std::array
处理类似的内容。“我知道如何从函数返回2d数组”-不,您不知道,因为这是不可能的。您所知道的是如何从函数返回指向数组的指针。为了您的理智起见,请使用
std::array
这样的内容。“我知道如何从函数返回2d数组”-不,您不知道,因为这是不可能的。您所知道的是如何从函数返回指向数组的指针。@Turgal还有其他答案,告诉您应该做什么。我的回答只是简单地回答问题,没有别的。我不会投反对票,但严格地说,这并没有回答OP的问题,“返回常量2d数组”,因为它只返回指针。@juanchopanza这是OP的技术错误。。。这是问题
我应该把const放在哪里的答案…
@Turgal还有其他答案,告诉我们应该做什么。我的回答只是简单地回答问题,没有别的。我不会投反对票,但严格地说,这并没有回答OP的问题,“返回常量2d数组”,因为它只返回指针。@juanchopanza这是OP的技术错误。。。这是问题
的答案,我应该把const放在哪行…