【发布时间】:2017-04-26 05:22:08
【问题描述】:
需要帮助
我是运算符重载的新手, 现在我正在尝试初始化一个 使用运算符 [][] 重载的矩阵。 我想使用以下方式初始化矩阵: 矩阵 [0][0] =100
可以使用 [][] 吗?我如何使用它们?
//main.cpp//
void main()
{
Matrix m(2, 2);
m[0][0] = 2;
}
//matrix.h//
#ifndef MATRIX_H
#define MATRIX_H
class Matrix
{
public :
Matrix(int ,int );
Matrix operator [][] // *****im stuck here*****
private :
int numRows;
int numCols;
int **matrix;
}
#endif
//matrix.cpp//
#include <iostream>
#include "Matrix.h"
using namespace std;
Matrix::Matrix(int rows,int cols)
:numOfCols(cols),numOfRows (rows)
{
matrix=new int *[cols];
for(int i=0;i<rows;i++)
{
matrix[i]=new int [cols];
for(int c=0;c<cols;c++)
{
matrix[i][c]=0;
}
}
}
【问题讨论】:
-
与其编写所有这些代码,不如直接使用
std::array<std::array<int columnCount>, rowCount>?你仍然会得到foo[y][x]语法。 -
@Jack Deeth 是个坏主意,如果 ne 需要一个无间隙的值数组,例如在其他地方使用。从性能 POV 来看也是个坏主意。这是一个教育练习 - 不会削减它。
标签: c++ matrix overloading operator-keyword