作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
bool operator==(const Inc::CReminderItem& Item1, const Inc::CReminderItem& Item2)
{
bool bDate = false, bDesc = false, bInfo = false, bWeekday = false;
if(Item1.m_Date == Item2.m_Date)
bDate = true;
if(Item1.m_strDescription == Item2.m_strDescription)
bDesc = true;
if(Item1.m_strInfoShort == Item2.m_strInfoShort)
bInfo = true;
if(Item1.m_nWeekday == Item2.m_nWeekday)
bWeekday = true;
return(bDate && bDesc && bInfo && bWeekday);
}
bool operator!=(const Inc::CReminderItem& Item1, const Inc::CReminderItem& Item2)
{
return !(Item1 == Item2); // <<--- ambiguous here!
}
两个运算符在类中都被声明为友元运算符。
错误是:
error C2593: 'operator ==' is ambiguous
我不确定,为什么它是模棱两可的 O_o 以及如何解决这个问题。非常感谢任何帮助:)
最佳答案
首先,如果它是“模棱两可”的,我希望其他 operator==
是出现在某处。但是很难说任何特定的编译器是什么真的想用它的错误消息来告诉你。
其次,你真的没有展示足够的代码让任何人说出什么是错误的。有许多可能的错误:friend 被声明并且这些定义在不同的命名空间中, friend 的签名略有不同,等等。如果 Inc
是命名空间,这些运算符也必须在 Inc
中。否则,你在友元声明中的 Inc
中声明了一个 operator==
,并且全局命名空间中的 operator==
。两者都考虑,其中导致歧义。
(我通常的处理方式是定义一个成员函数,isEqual
,并让 operator==
和 operator!=
调用它。那方式,不需要 friend 声明。)
关于c++ - 重载运算符 == 和 != : compiler moans ambiguity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976075/
我有以下代码: bool operator==(const Inc::CReminderItem& Item1, const Inc::CReminderItem& Item2) { bool
我是一名优秀的程序员,十分优秀!