必须使用大括号括起初始化程序

时间:2016-11-02 07:50:12

标签: c++ arrays vector stl

class LUT {
public :
vector <string> Allgate_name;
vector<vector<double> > Cload_vals;
vector<vector<double> > Tau_in_vals;
vector<double [7][7] > All_delays;
vector<double [7][7] > All_slews;
void assignarrays(string);
};

上面的代码显示我正在声明一个7x7数组的向量。但是当我尝试将7x7阵列推入此向量时,我遇到以下错误。

“数组必须使用括号括起的初始值设定项进行初始化” “无效的数组赋值”

我正在推动这个向量的数组的初始化就是这个。

double NAND_loadtable_d [7][7];

我在哪里错了?

2 个答案:

答案 0 :(得分:2)

std::vector::push_back要求元素类型为CopyAssignable(当您传递左值,例如NAND_loadtable_d时)。普通的旧数组不是CopyAssignable。

您可以使用包装成员数组的类来代替数组。幸运的是,标准库为您提供了这样的包装:std::vector<std::array<std::array<double, 7>, 7>>而不是。

答案 1 :(得分:-4)

正如UnholySheep所写,你必须初始化并且不仅要声明变量NAND_loadtable_d:

double NAND_loadtable_d [][] = new double[7][];
for (int i = 0; i < 7; i++) {
   NAND_loadtable_d[i] = new double[7];
}