gpt4 book ai didi

c++ - 为 while、if 和 for 语句获取用户定义类的对象值

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

我正在尝试从用户定义的对象中获取 bool 值。例如使用 float 或 int 我可以做类似的事情

float a = 3.5
if (a) doSomething();

我希望我的类看起来像这样:

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

if (!T) cout << "Error occured";
else {
doStuff();
}

当然我可以定义一个返回 bool 的函数(比如 bool isValid();)并直接调用它,但我想知道这是否可能。

最佳答案

在 C++11 中,您可以安全地将您的类型转换为 bool 值:

explicit operator bool() const {return isValid();}

如果你的编译器不支持,那么你可以不用explicit写同样的东西;但是,这可能有点危险,因为它允许隐式转换为任何数字类型。相反,您可以使用一个名为 safe bool idiom 的 hack。 :

private:
typedef void (Socket::*safe_bool)() const;
void safe_true() const {}
public:
operator safe_bool() const {return isValid() ? &Socket::safe_true : 0;}

这会返回一个指针类型,它不能被转换成除 bool 之外的任何东西。

关于c++ - 为 while、if 和 for 语句获取用户定义类的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11365738/

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