如果你看这个课程,我该如何实现以下目标:
class foo {
public:
void foo(double (&arr)[3][4]) { //Constructor
arr2 = arr; //??? How to assign multidimensional arrays?
}
void bar() { //Usage
double doSomething = arr2[1][0];
}
private:
double* arr2[3][4]; //??? How to store this?
}
谢谢大家!
更多解释:这应该是一个类,它在构造函数(foo())中获得对二维数组的引用。它将此引用存储在成员变量中,以便其他一些函数(bar())可以在以后访问它们。
那么“format”具有成员变量以及如何为其分配构造函数的参数?
Edit2:当我要求界面时,我无法更改签名以使用std :: vector> ...
答案 0 :(得分:2)
class foo {
public:
// See http://cdecl.ridiculousfish.com/?q=double+%28%26arr%29%5B3%5D%5B4%5D
foo(double (&arr)[3][4]) :arr2(&arr) {
// This constructor uses constructor list initialization, but you could have used
// assignment instead, like this:
// arr2 = &arr;
}
double bar() { //Usage
double doSomething = (*arr2)[1][0];
return doSomething*doSomething;
}
private:
// See http://cdecl.ridiculousfish.com/?q=double+%28*arr2%29%5B3%5D%5B4%5D
double (*arr2)[3][4];
};
int main () {
double oof[3][4] = {{0.,},};
foo moo(oof);
return int(moo.bar());
}
答案 1 :(得分:1)
由于您未指定使用原始指针的原因且标记为C++
,因此您应使用嵌套的vectors
代替:
#include <vector>
class foo
{
public:
void foo(const std::vector<std::vector<double>>& arr)
: arr2(arr)
{ //Constructor
}
void bar() { //Usage
double doSomething = arr2[1][0];
}
private:
std::vector<std::vector<double>> arr2;
};