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”操作符=
可以接受的参数集非常有限。实际上只有一个参数,它就是被复制的对象。推荐阅读:谢谢,我错过了参考位!