gpt4 book ai didi

c++ - 二进制问题==

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:05 27 4
gpt4 key购买 nike

我遇到了二进制 operator== 的奇怪问题.
我有一个返回的函数: Type< Colors >* get(); , T类型为 enum Colors {Red,Black}我有一个 operator==定义为:

bool operator==(Type<Colors>* left, Colors right)
{
//...
}

现在,在代码中我有一行:

if (get() == Red)
{
//
}

但是我在这里遇到错误:

error C2679: binary '==' : no operator found which takes a right-hand operand of type 'Colors' (or there is no acceptable conversion)
1> could be 'built-in C++ operator==(Node<Key_T,Value_T> *, Node<Key_T,Value_T> *)'
1> with
1> [
1> Key_T=int,
1> Value_T=int
1> ]

or 'bool operator ==(const Type<T> *,const Colors)'
1> with
1> [
1> T=Colors
1> ]
1> while trying to match the argument list '(Node<Key_T,Value_T> *, Colors)'
1> with
1> [
1> Key_T=int,
1> Value_T=int
1> ]

显然,第二个匹配项是我打算使用的,它是完美的匹配项,但它不想 ;) 编译。我做错了什么?

最佳答案

(这本身比答案更具诊断性......但评论太多了。)

GGC 4.5.2 对我来说没问题:

enum Colour { Red, Black };

template <typename T>
struct Type { };

bool operator==(Type<Colour>*, Colour) { return true; }

int main()
{
Type<Colour>* p;
return p == Black;
}

请在您的编译器上尝试上述操作,如果有错误消息,请发布。如果没有,请发布您的完整程序,因为错误可能是您没有发布的一些微妙的事情。

关于c++ - 二进制问题==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6855943/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com