利亚姆·怀特
我有一个Line
代表笛卡尔平面上一条线的相关信息。该类型除其他成员外,还具有bool
指示坡度是否已定义的 a。我希望能够做到以下几点:
if(my_line){
double new_slope = my_line.slope * 9;
}
其中实例my_line
本身在布尔上下文中隐式转换为真/假值。我正在考虑使用智能指针看到的行为,如果它指向nullptr
or 0
,则该实例被认为是错误的。
我将如何去模仿这种行为?
雷米·勒博
在您的Line
类中,实现一个bool
转换运算符。您还可以选择重载operator!
, 但这在 C++11 及更高版本中不是必需的。请参阅上下文转换。
例如:
class Line {
bool mSlopeDefined;
...
public:
...
explicit operator bool() const noexcept {
return mSlopeDefined;
}
// optional since C++11, but doesn't hurt...
bool operator!() const {
return !mSlopeDefined;
}
};
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
编辑于
我来说两句