我正在做一个需要使用模板完成的作业:它是一个矩阵类。带模板的重载操作符()
其中一个告诉我超载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