C++ 为while、if和for语句的用户定义类获取object值
我试图从用户定义的对象中获取布尔值。 例如,对于float或int,我可以做如下操作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 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;}