Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用初始值设定项\u list创建矩阵构造函数 Matrix::Matrix(常量列表和列表){ uint rows=list.size(); uint cols=list.begin()->size(); int-cnt=0; mtrx=新的双*[行]; 对于(int j=0;j_C++ - Fatal编程技术网

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()