2014-10-18 203 views
-4

錯誤我試圖超載< <並使用標準'cout < < m1;'打印類型線。<< <<超載

// Output 
void Matrix::print(ostream& out) const 
{ 
    for(int i = 0; i < rows; i++) 
    { 
     for (int j = 0; j < cols; j++) 
     out << setw(4) << (*this)(i,j); 
     out << endl; 
    } 
} 

// Overloaded stream insertion operator 
ostream& operator<<(ostream& out, const Matrix& x) // display the matrix 
{ 
    return x.print(out); 
} 

我得到非const等等等等的無效初始化...

回答

2

這是一個非常簡單的錯誤。請注意,您的operator<<函數聲明它的返回值爲ostream&,但您的Matrix::print方法沒有任何回報。要解決此問題,請將您的operator<<功能更改爲:

ostream& operator<<(ostream& out, const Matrix& x) // display the matrix 
{ 
    x.print(out); 
    return out; 
}