c – 定义operator void *和operator bool

我尝试使用一个运算符bool和一个运算符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";
    }
} 
最佳答案
您可以直接致电操作符.

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

但是,在这种情况下,您应该定义operator ==()而不依赖于转换.

转载注明原文:c – 定义operator void *和operator bool - 代码日志