gpt4 book ai didi

c++ - 同时定义 operator void* 和 operator bool

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

我尝试用一​​个 operator bool 和一个 operator void* 创建一个类,但编译器说它们不明确。有什么方法可以向编译器解释要使用什么运算符,或者我不能同时使用它们吗?

class A {
public:
operator void*(){
cout << "operator void* is called" << endl;
return 0;
}

operator bool(){
cout << "operator bool is called" << endl;
return true;
}
};

int main()
{
A a1, a2;
if (a1 == a2){
cout << "hello";
}
}

最佳答案

这里的问题是您正在定义 operator bool 但从它的声音来看您想要的是 operator ==。或者,您可以像这样显式转换为 void *:

if ((void *)a1 == (void *)a2) {
// ...
}

...但这真的很奇怪。不要那样做。相反,在 class A 中定义你的 operator ==:

bool operator==(const A& other) const {
return /* whatever */;
}

关于c++ - 同时定义 operator void* 和 operator bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4294873/

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