【发布时间】:2014-02-18 05:20:21
【问题描述】:
该类由存储动态二维数组的对象“mPoint”组成。我正在尝试这样做,以便可以比较其中两个矩阵以查看它们是否等效。因此我重载了运算符'=='。
我收到错误消息“'operator[]' 不匹配(操作数类型是 'Square_Matrix 和 'int'),它指向行“if (mPoint[ i ][ j ] != Par[ i ][ j ])" 在 .cpp 文件中。我该如何解决这个问题?我对重载很陌生
//header file
#include <iostream>
using namespace std;
class Square_Matrix
{
public:
int **mPoint;
int size;
void Set_Size (int new_size);
bool operator==(Square_Matrix Par);
.
//.cpp file
#include <iostream>
using namespace std;
#include "Square_Matrix.h"
void Square_Matrix::Set_Size (int new_size)
{
for (int i = 0; i < size; i++){
delete [] mPoint[i];
}
delete [] mPoint;
size = new_size;
mPoint = new int*[new_size];
for (int i = 0; i < new_size; i++){
mPoint[i] = new int[new_size];
}
}
bool Square_Matrix::operator==(Square_Matrix Par){
if (size != Par.size){
return false;
}
for (int i = 0; i < size; i++){
for (int j = 0; j < size; j++){
if (mPoint[ i ][ j ] != Par[ i ][ j ]){
return false;
}
}
}
return true;
}
【问题讨论】:
-
请显示你的重载定义
operator[] -
如果您还没有定义一个,那么这就是您收到错误的原因。