小编Dav*_*vid的帖子

C++模板拷贝构造函数,编译器说"传递const作为此参数丢弃限定符"

我正在尝试创建动态矩阵的模板类.凭借我目前对C++的了解,我设法解决了一些问题,但我坚持使用复制构造函数并重载operator =; 换句话说,我无法创建我的对象的副本.在我oppinion这应该工作,但我的朋友,编译器,告诉我,我有1错误:错误:通过"常量矩阵"作为"这个"的"廉政矩阵参数:: getElement(INT,INT)与T = INT ]'在此行丢弃限定符[-fpermissive]:

m[i][j] = original.getElement(i, j);
Run Code Online (Sandbox Code Playgroud)

当我想创建一个对象时:

Matrix<int> m = Matrix<int>(3, 3);
Run Code Online (Sandbox Code Playgroud)

我的模板类在这里:

template<class T>class Matrix
{
 public:

  Matrix<T>(int lines, int columns)
  {
    this->lines = lines;
    this->columns = columns;
    T* aux = new T[this->lines * this->columns];
    m = new T*[lines];
    for (int i = 0; i < this->lines; i++)
    {
      m[i] = aux + (i * this->columns);
    }
    for (int i = 0; i < this->lines; i++)
    {
      for (int j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

c++ templates compiler-errors operator-overloading copy-constructor

4
推荐指数
1
解决办法
3018
查看次数