C++ 为while、if和for语句的用户定义类获取object值

C++ 为while、if和for语句的用户定义类获取object值,c++,C++,我试图从用户定义的对象中获取布尔值。 例如,对于float或int,我可以做如下操作 float a = 3.5 if (a) doSomething(); 我想让我的班级看起来像这样: class Socket { ... ... }; ... Socket T; if (!T) cout << "Error occured"; else { doStuff(); } 类套接字{ ... ... }; ... 插座T; 如果在C++11中(!T)不能,则可以安全地将类型

我试图从用户定义的对象中获取布尔值。 例如,对于float或int,我可以做如下操作

float a = 3.5
if (a) doSomething();
我想让我的班级看起来像这样:

class Socket {
...
...
};
...
Socket T;

if (!T) cout << "Error occured";
else {
   doStuff();
}
类套接字{
...
...
};
...
插座T;

如果在C++11中(!T)不能,则可以安全地将类型转换为布尔值:

explicit operator bool() const {return isValid();}
如果您的编译器不支持这一点,那么您可以在不使用显式
的情况下编写相同的代码;但是,这可能有点危险,因为它允许隐式转换为任何数字类型。相反,您可以使用一种称为:


这返回的指针类型不能转换为除
bool

之外的任何类型。我认为只要指针不为Null,它将始终返回true。@user1084113:这里没有指针。问题在于测试对象的有效性。
private:
    typedef void (Socket::*safe_bool)() const;
    void safe_true() const {}
public:
    operator safe_bool() const {return isValid() ? &Socket::safe_true : 0;}