前天想给类XSQLConstExpression定义一个+=操作,以const XSQLConstExpression&的类型调用参数,函数体中调用了该类的一个方法返回对该类某个变量的引用。出错~~
错误提示信息为this的类型不能由const XSQLConstExpression&转换为XSQLConstExpression,后来我把const去掉就通过编译了。
下面我测试了一段代码,发现了真正的问题和解决方案:
class
Value
...
{public: int a;}
;
class Con
... {
public:
Value v;
//两个const必须都有
const Value& GetValue() const
...{
return v;
}
void SetValue(int avalue)
...{
v.a = avalue;
}
public:
Con(int value)
...{
SetValue(value);
}
Con& operator+=( const Con& para)
...{
Value x = para.GetValue();
v.a += x.a;
return *this;
}
} ;
class Con
... {
public:
Value v;
//两个const必须都有
const Value& GetValue() const
...{
return v;
}
void SetValue(int avalue)
...{
v.a = avalue;
}
public:
Con(int value)
...{
SetValue(value);
}
Con& operator+=( const Con& para)
...{
Value x = para.GetValue();
v.a += x.a;
return *this;
}
} ;