【发布时间】:2014-12-06 16:55:06
【问题描述】:
我遇到了一个奇怪的问题,我不知道如何在重载中解决。 我也尝试过重载运算符 == 。 简单的例子是:
class bla{
public:
int a;
void bla(int a):a(a){}//costructor
bool operator==(const bla& ob)
return (a==ob.a);//chk if equal
};
void main(){
bla A,B;
if (A==B)
flag=1;//just an example...
这很简单,效果很好,我正在尝试处理以下情况:
if (A==B==C==D)
所以我需要返回类型对象,现在输入 bool。 我试图添加另一个功能:
bla &bla:: operator==(const bool answer){//as a member function
if (answer)
return *this;
但它似乎没有帮助。有什么建议吗? 谢谢大家
【问题讨论】:
-
如果您真的必须拥有此功能(我对此提出质疑),那么您可以让运算符返回一个代理类型,该类型既可用于布尔上下文,也可用于进一步比较。
-
为什么?更改 C++ 的预期语法规则对您有什么好处?
-
搞笑,
class bla没有字段x!!! -
嗨,@StavSer。如果这确实是一项作业,并且您被要求支持
A==B==C==D语法,则强烈暗示您尚未分享有关此作业的一些关键细节。或者分配这个的人已经疯了。 -
请注意,您正在更改(或试图更改)C++ 的现有语法。如果您执行 int a、b、c 并执行
if (a == b == c),它将比较a == b,然后将c与结果进行比较,在 99.9% 的情况下,这不是您想要的。所以看到上面代码的人肯定会很困惑,除非到处都说得很清楚就是这样用的……
标签: c++ class overloading