C++ 如何使'=';带参数的运算符?

C++ 如何使'=';带参数的运算符?,c++,class,templates,operators,overriding,C++,Class,Templates,Operators,Overriding,使用“=”为类成员设置一些值并提供其他参数的正确语法是什么?例如,向量中的位置: MyClass<float> mt; mt(2,4) = 3.5; MyClass-mt; mt(2,4)=3.5; 我试过: template <class _type> _type myClass<_type>::operator()(int r,int c) { return data[r*nCols+c]; }; template <class _

使用“=”为类成员设置一些值并提供其他参数的正确语法是什么?例如,向量中的位置:

MyClass<float> mt;
mt(2,4) = 3.5;
MyClass-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; 
};
模板
_类型myClass::operator()(int r,int c){
返回数据[r*nCols+c];
};
模板
myClass::运算符=(int r,int c,_typeval){
数据(r,c)=val;
};

但是编译器告诉我,我可以用一个参数覆盖'='运算符。

当您重载
=
运算符时,您只希望参数中有右边的值。由于重载了
()
运算符,因此不需要使用
=
运算符处理
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]; 
};
模板
_类型&myClass::operator()(int r,int c){
返回数据[r*nCols+c];
};

操作员=
应将一个
MyClass
分配给另一个
MyClass
。如果要分配给元素,请使用
操作符()访问该元素,就像使用
mt(2,4)=3.5一样
@NathanOliver它不起作用,我得到“error:lvalue required as left operand of assignment”
操作符=
可以接受的参数集非常有限。实际上只有一个参数,它就是被复制的对象。推荐阅读:谢谢,我错过了参考位!