如何返回指向2D数组的指针?

时间:2019-05-28 15:34:20

标签: c++

如果您可以通过省略方括号将指针返回数组,那么如何将指针返回2D数组?

这就是我所拥有的。

class Test {
private:
    int ID;
    float wts[3][4];
    int efs[3];
    float avs[4];

public:

    Test () {
        efs[0] = 100;
        efs[1] = 100;
        efs[2] = 0;

        for (int i = 0; i < 4; i++) { avs[i] = 0; }

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 4; j++) {
                wts[i][j] = (rand() % 3) - 1;
            }
        }
    }

    int GetID() { return ID; }
    void SetID(int newID) { ID = newID; }

    int* GetEFs() { return efs; }

    float* GetAVs() { return avs; }

    float* GetWts() { return wts; }
}

单维数组的吸气剂可以工作,但是2D数组的吸气剂会说“返回值类型与函数类型不匹配。”

1 个答案:

答案 0 :(得分:0)

当心,数组不是C ++中的一等公民(它们也不是C语言),多维数组甚至更难正确处理。

您在这里需要:

float(* GetWts())[4] { return wts; }

您可以这样使用它:

float (*t)[4] = test.GetWts();

但这是C-ish。如果可以的话,请尝试坚持使用标准容器(以及向量或向量来模拟2D数组)。