我在C ++中定义了一个ReturnValue
类,需要报告方法是否成功。我希望类的对象在成功时评估为true
,在出错时评估为false
。我会覆盖哪个运算符来控制班级的真实性?
答案 0 :(得分:18)
简单的答案是提供operator bool() const
,但您可能需要查看safe bool idiom,而不是转换为bool(可能会被隐式转换为其他整数类型)转换为一种不同的类型(指向私有类型的成员函数的指针),它不接受这些转换。
答案 1 :(得分:8)
好吧,你可以重载operator bool()
:
class ReturnValue
{
operator bool() const
{
return true; // Or false!
}
};
答案 2 :(得分:3)
重载此运算符:
operator bool();
答案 3 :(得分:0)
最好使用 explicit 关键字,否则会干扰其他重载,例如 operator +
这里是一个示例:
class test_string
{
public:
std::string p_str;
explicit operator bool()
{
return (p_str.size() ? true : false);
}
};
和用途:
test_string s;
printf("%s\n", (s) ? s.p_str.c_str() : "EMPTY");