我正在做一個需要使用模板完成的作業:它是一個矩陣類。帶模板的重載操作符()
其中一個告訴我超載operator()(int r, int c);
,所以我可以使用obj(a, b);
訪問我的數據或使用obj(a, b)=100;
更改它。
我的類模板是template<class T, int C, int R>;
後來我在公衆範圍我類中創建:
T& operator()(int r, int c);//LINE 16
實現較爲簡單。
我在兩個方面嘗試:
template <class T>
T& Matrix::operator()(int r, int c){
return matrixData[r][c];
}
template <class T, int C, int R>
T& Matrix::operator()(int r, int c){
return matrixData[r][c];
}
在最後一個我得到的錯誤,告訴我:
16: Error: expected type-specifier before '(' token
線16的上方是一個解說的錯誤:
no 'T& Matrix<T, C, R>::operator()(int, int)' member function declared in class 'Matrix<T, C, R>'
它說: 錯誤的參數數量。 我創建了一些朋友操作員,他們工作得很好,但現在我無法解決這個問題。 – Lefsler
@demonofnight:我編輯的答案中的代碼適合我編譯。 – NPE
如果我只保留類T它不工作,看來我需要把。 它告訴我,參數的數量應該是3而不是1. 該類是模板 class Matrix {...} 如果我使用所有3個參數修復該問題,我的主要告訴我,我有一個未定義的參考矩陣 :: operator()(int,int) –
Lefsler