C++ 使用初始值设定项\u list创建矩阵构造函数 Matrix::Matrix(常量列表和列表){ uint rows=list.size(); uint cols=list.begin()->size(); int-cnt=0; mtrx=新的双*[行]; 对于(int j=0;j
它不断地给我错误:C++ 使用初始值设定项\u list创建矩阵构造函数 Matrix::Matrix(常量列表和列表){ uint rows=list.size(); uint cols=list.begin()->size(); int-cnt=0; mtrx=新的双*[行]; 对于(int j=0;j,c++,C++,它不断地给我错误: Matrix::Matrix(const i_list & list){ uint rows = list.size(); uint cols = list.begin()->size(); int cnt = 0; mtrx = new double*[rows]; for(int j = 0; j < cols; j++){ mtrx[j] = new double[cols]; } for(int k = 0; k <
Matrix::Matrix(const i_list & list){
uint rows = list.size();
uint cols = list.begin()->size();
int cnt = 0;
mtrx = new double*[rows];
for(int j = 0; j < cols; j++){
mtrx[j] = new double[cols];
}
for(int k = 0; k < rows; k++){
for(int l = 0; l < cols; l++){
mtrx[k][l] = *(list.begin() + cnt);
cnt++;
}
}
}
Matrix.cpp:30:15:错误:无法转换'const'
std::赋值中的初始值设定项\u list'到'double'
mtrx[k][l]=*(list.begin()+cnt);
^
有没有办法把它转换成双精度的?强制转换不起作用。您的代码片段不包含
i\u list
的定义,但它似乎是std::initializer\u list
的initializer\u list
。因此,
Matrix.cpp:30:15: error: cannot convert ‘const
std::initializer_list<double>’ to ‘double’ in assignment
mtrx[k][l] = *(list.begin() + cnt);
^
是初始值设定项\u列表
对象本身(内部对象),而不是双重对象。这就是您收到的错误消息
您可能希望将双循环转换为以下内容:
*(list.begin() + cnt);
#include <algorithm>
auto inner = std::begin(list);
for(int k = 0; k < rows; ++k, ++inner)
std::copy(std::begin(*inner), std::end(*inner), &mtrx[k][0]);
#include.根据代码,我推断您的I_列表
是一个嵌套的初始化列表
,如下所示:
*(list.begin() + cnt);
#include <algorithm>
auto inner = std::begin(list);
for(int k = 0; k < rows; ++k, ++inner)
std::copy(std::begin(*inner), std::end(*inner), &mtrx[k][0]);
i_list在my.h文件typedef initializer_list i_list中定义;我试过了,它告诉我:Matrix.cpp:30:32:error:no match'operator[](操作数类型为'const std::initializer_list'和'int')mtrx[k][l]=list.begin()[k][l]@卡彭克修好了。忘记了.begin()