I am writing a program that handles matrices. The program enables you to enter the matrix at calling of the constructor:
CMatrix A(3,3,{{1,2,3},{4,5,6},{7,8,9}});
But it seams that there is a problem with sending a 2d array as int** to the constructor. How can I fix it? I would prefer to avoid template if possible. I am also looking for a clean way.
The following code faces with error:
error: no matching function for call to ‘CMatrix::CMatrix(int, int, <brace-enclosed initializer list>)’ CMatrix A(3,3,{{1,2,3},{4,5,6},{7,8,9}});
,
 note:   no known conversion for argument 3 from ‘<brace-enclosed initializer list>’ to ‘int**’
code:
#include <iostream>
using namespace std;
class CMatrix
{
    int rows,columns;
    int **members;
public:
    CMatrix(int rows,int columns);
    CMatrix(int rows,int columns,int **clone);
};
CMatrix::CMatrix(int rows,int columns)
{
    this->rows=rows;
    this->columns=columns;
    members=new int*[rows];
    for(int i=0;i<columns;i++)
        members[i]=new int[columns];
}
CMatrix::CMatrix(int rows,int columns,int **clone)
{
    CMatrix(rows,columns);
    for(int i=0;i<rows;i++)
        for(int j=0;j<columns;j++)
            members[i][j]=clone[i][j];
}
int main()
{
    CMatrix A(3,3,{{1,2,3},{4,5,6},{7,8,9}});
    ...
    return 0;
}
calling:
g++ -std=c++11 test.cpp
 
    