我想創建一個簡單的3x3矩陣類並且能夠通過下標運算符訪問其內容。代碼如下:錯誤:從'const int *'無效轉換爲'int *'
// Matrix.h
class Matrix {
private:
int matrix[3][3];
public:
int* operator[](const int index) const;
};
// Matrix.cpp
int* Matrix::operator[](const int index) const {
return this->matrix[index];
}
我希望能夠訪問數組的元素,而不管矩陣的對象是const還是非const。但我從編譯器以下錯誤:
錯誤:從「const int的*」的無效轉換到「詮釋*」 [-fpermissive]
我做了一些研究,我有一個假設:也許,是因爲我已經把這個成員函數聲明爲一個const函數,在它的定義中,編譯器把所有對象的不可變成員都視爲const成員,所以這就是編譯器認爲它是從'const int *'改爲'int *'。 我的問題:這個假設是否正確?如果不是,那爲什麼會發生?我認爲這是有道理的,並且是確保'const Matrix * this'對象的一個好方法。
編譯器的信息: GCC 5.3.0從equation.com
http://stackoverflow.com/questions/4059932/what-is-the-meaning-of-a-const-at-end-of-a-member-函數 –