Я кодирую класс шаблона матрицы, и проблема, с которой я сталкиваюсь, заключается в том, что массив создан и значения заполняются, но когда я использую функцию print(), массив снова пуст. Может ли кто-нибудь, возможно, указать, что я делаю неправильно, пожалуйста?Шаблон класса матрицы C++
данных определяются как таковую:
T **data;
template<class T>
CMatrix<T>::CMatrix(int rows, int cols)
{
setRow(rows);
setCol(cols);
data = new int*[rows];
// Create matrix with dimensions given
for (int i = 0; i < row; i++) {
data[i] = new int [cols];
}
for(int i = 0; i < row; i++) {
for(int j = 0; j < cols; j++) {
data[i][j] = (int) i * j;
}
}
}
template<class T>
void CMatrix<T>::print()
{
int i,j;
for (i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
printf("%.1f ",data[i][j]);
}
printf("\n");
}
}
Основной функция:
int main(){
int rows =4;
int cols = 4;
CMatrix<int>* matrixOne= new CMatrix<int>(rows, cols);
matrixOne->print();
return(0);
}
декларации шаблона:
template<class T>
class CMatrix
{
private:
int row; // number of rows
int column; // number of columns
public:
CMatrix(int rows, int cols);
CMatrix(const CMatrix& data); //Copy constructor
//Constructor taking an array of 16 elements
CMatrix(T Matrix[16]);
~CMatrix();
T **data;
void setRow(int r);
void setCol(int c);
int getRow();
int getCol();
//Subscript operators
T& operator()(int row, int col);
T operator()(int row, int col) const;
void print();
};
Вы скопировали компиляционный код? Что вы подразумеваете под пустым? – UmNyobe
Можете ли вы опубликовать свою основную функцию. –
Пожалуйста, напишите * полный *, * минимальный * рабочий пример. Кодовые фрагменты не помогают. –