这个重载+ 的错误怎么改,如果去掉const就没错了,但是却想用const
/* quantic: include two class :item and quantic
* this is a quantic class
*/
#include <iostream>
#include <vector>
using namespace std;
class quitem
{
public:
quitem(){};
quitem(int a,int b):_con(a),_exf(b){};
quitem(const quitem& rhs)
{
_con=rhs._con;
_exf=rhs._exf;
}
~quitem(){};
int& con(){return _con;}
int& exf(){return _exf;}
quitem& operator=(const quitem&);
private:
int _con,_exf;
};
quitem& quitem::operator=(const quitem& rhs)
{
_con=rhs._con;
_exf=rhs._exf;
return *this;
}
/***************************************************/
class quantic
{
public:
quantic(){};
quantic(const quantic&);
~quantic(){};
void creat();
quantic& operator=(const quantic&);
quantic operator-(const quantic&)const;
quantic operator+(const quantic&)const;
quantic operator*(const quantic&)const;
quantic operator/(const quantic&)const;
friend ostream& operator<<(ostream&,quantic&);
private:
vector<quitem> _qup;
};
//***************************************************
quantic::quantic(const quantic& rhs)
{
_qup=rhs._qup;
}
//***************************************************
quantic& quantic::operator=(const quantic& rhs)
{
_qup=rhs._qup;
return *this;
}
//***************************************************
quantic quantic::operator+(const quantic& rhs) const
{
quantic temp(rhs);
vector<quitem>::iterator qiter=temp._qup.begin();
vector<quitem>::const_iterator iter=_qup.begin();
for( ; iter!=_qup.end(); ++iter)
{
for(qiter=temp._qup.begin();qiter!=temp._qup.end();qiter++)
{
//if their exf is equal,add their con
if(iter->exf()==qiter->exf() )
{
qiter->exf()=qiter->exf()+iter->exf();
goto addend;
}
}
temp._qup.push_back(quitem(iter->con(),iter->exf() ) );
addend:;
}
return temp;
}
以下是报错:
Compiling...
question.cpp
D:\cpp\shenfuxing\question.cpp(74) : error C2662: 'exf' : cannot convert 'this' pointer from 'const class quitem' to 'class quitem &'
Conversion loses qualifiers
D:\cpp\shenfuxing\question.cpp(76) : error C2662: 'exf' : cannot convert 'this' pointer from 'const class quitem' to 'class quitem &'
Conversion loses qualifiers
D:\cpp\shenfuxing\question.cpp(80) : error C2662: 'con' : cannot convert 'this' pointer from 'const class quitem' to 'class quitem &'
Conversion loses qualifiers
D:\cpp\shenfuxing\question.cpp(80) : error C2662: 'exf' : cannot convert 'this' pointer from 'const class quitem' to 'class quitem &'
Conversion loses qualifiers
Error executing cl.exe.
question.obj - 4 error(s), 0 warning(s)