我無法理解標題中的問題。 所以我有兩個類,一個3雙打的矢量和一個2D動態矩陣,每個單元格都有一個Vector對象。 Matrix的構造函數工作並不會拋出錯誤。但是,當我想引用在ostream過載中創建的Matrix實例的單元時,我得到爲什麼operator []在初始化時工作,在引用2d動態數組時不起作用
「不匹配'operator []'(操作數類型是'Matrix'和'int') 「
爲什麼在初始化期間使用[] []表示法並且稍後不確定? 是否有一個適度的直接方法來解決這個問題? 非常感謝!
class Vector{
private:
double x, y, z;
public:
Vector(){
x = y = z = 0;
}
Vector(int x_, int y_, int z_){
x = x_;
y = y_;
z = z_;
}
friend ostream &operator<< (ostream &wyj, Vector &v);
friend istream &operator>> (istream &wej, Vector &v);
};
/// ===== MATRIX CLASS CONSISTS OF VECTOR OBJECTS
class Matrix{
private:
Vector ** M;
int row;
int col;
public:
Matrix(int col, int row){
M = new Vector * [row];
for(int i = 0; i < row; i++){
M[i] = new Vector[col];
}
for(int i = 0; i < row; i++){
for(int j = 0; j < col; j++){
M[i][j] = Vector();
}
}
}
friend ostream &operator<< (ostream &wyj, Matrix &M);
};
ostream &operator<< (ostream &wyj, Matrix &M){
for(int i = 0; i < M.row; i++){
for(int j = 0; j < M.col; j++){
wyj << M[i][j] << " ";
}
wyj<< endl;
}
return wyj;
}
int main(){
Matrix A(2, 2);
cout << A[1][1]; // LURD VADAR SAYZ NOOOOOOOOOOOOOOO
}
編輯:< <重載方法
你可能想看看[一些很好的C++材料(http://stackoverflow.com/questions/388242/the-definitive-c-book-指南和列表)給你更好的C++背景。儘管如此,你得到這個錯誤的原因是你沒有爲'Matrix'類重載'operator [](...)',並且它的返回類型也必須支持'[]'。 – WhiZTiM
要在'main()'中使用'A [1] [1]',Matrix類必須提供一個'operator []',它返回一個也有'operator []'的東西。它沒有。 – Peter
我能理解。但是爲什麼當我首先創建數組時,符號本身起作用? – Martin