对于 C++ 的所有基本类型,可以简单地查询:
if(varname)
并将类型转换为布尔值以进行评估。有没有办法在用户定义的类中复制这个功能?我的一个类由一个整数标识,尽管它有许多其他成员,我希望能够检查整数是否以这种方式设置为 NULL。
谢谢。
原文由 wyatt 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于 C++ 的所有基本类型,可以简单地查询:
if(varname)
并将类型转换为布尔值以进行评估。有没有办法在用户定义的类中复制这个功能?我的一个类由一个整数标识,尽管它有许多其他成员,我希望能够检查整数是否以这种方式设置为 NULL。
谢谢。
原文由 wyatt 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
您可以定义用户定义的转换运算符。这必须是成员函数,例如:
您还可以实现运算符 bool。但是,我 强烈 建议不要将转换运算符定义为整数类型(包括 bool),因为您的类将可用于算术表达式,这会很快导致混乱。
作为替代方案,例如,IOStreams 定义转换为
void*
。您可以测试void*
bool
方式相同,但没有来自void*
的语言定义的隐式转换。另一种选择是定义operator!
具有所需的语义。简而言之:将转换运算符定义为整数类型(包括布尔值)是一个非常糟糕的主意。