使用'='为类成员设置一些值并提供其他参数的正确语法是什么?例如。向量中的位置:
MyClass<float> mt;
mt(2,4) = 3.5;
我尝试过:
template <class _type>
_type myClass<_type>::operator()(int r,int c) {
return data[r*nCols+c];
};
template <class _type>
myClass<_type>::operator= (int r, int c, _type val) {
data(r,c) = val;
};
但是编译器告诉我可以使用1个参数覆盖'='运算符。
答案 0 :(得分:10)
当重载=
运算符时,您只想在参数中使用右边的值。由于您重载了()
运算符,因此不需要使用r
运算符来处理c
和=
值。您可以只使用mt(2,4) = 3.5;
,重载的()
运算符将处理mt(2,4)
部分。然后,您可以将返回的数据设置为所需的值,而不会重载任何=
运算符。
您需要返回对数据的引用,以便可以对其进行编辑,但是:
template <class _type>
_type& myClass<_type>::operator()(int r,int c) {
return data[r*nCols+c];
};