gpt4 book ai didi

c++ - 重载运算符==

转载 作者:太空狗 更新时间:2023-10-29 20:06:39 24 4
gpt4 key购买 nike

伙计们,我有一些愚蠢的结构,让我们称它为 X,我还有一个 fnc(不是它的成员)返回一个指向这个结构的指针,所以它看起来像这样:

    struct  X
{
bool operator==(const X* right)
{
//...
}
};

X* get(X* another)
{
//...
}

我在代码中也有一行“尝试”比较指向这些结构的指针,但真正的目的是比较指向的那些结构:

if (get(a) == get(b))//here obviously I have two pointers returned to be compared
{
//...
}

我还定义了 X operator==(const X* right) 的成员,它应该可以在上述情况下工作,但出于我不明白的原因,它不能。如何让它工作(我不能更改行 if (get(a) == get(b)) 并且 get 必须返回指针)。

最佳答案

您无法更改指针的比较方式。您必须要么更改if 语句的语法,要么更改get() 以返回引用而不是指针。任何其他解决方案都将变得非常棘手。

如果您真的必须忍受这些限制,我建议更改 get() 以返回某种专门的智能指针来封装您想要的这种不一致行为,重载 operator ->() 和重载 operator ==()。不过我发誓,这真的只是自找麻烦,而且我认为您最好还是与任何不允许您更改 if() 语句的力量作斗争。

关于c++ - 重载运算符==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6872347/

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