如果您可以通过省略方括号将指针返回数组,那么如何将指针返回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数组的吸气剂会说“返回值类型与函数类型不匹配。”
答案 0 :(得分:0)
当心,数组不是C ++中的一等公民(它们也不是C语言),多维数组甚至更难正确处理。
您在这里需要:
float(* GetWts())[4] { return wts; }
您可以这样使用它:
float (*t)[4] = test.GetWts();
但这是C-ish。如果可以的话,请尝试坚持使用标准容器(以及向量或向量来模拟2D数组)。