在 C++ 中的布尔上下文中使用户定义的类型为真/假

利亚姆·怀特

我有一个Line代表笛卡尔平面上一条线的相关信息。该类型除其他成员外,还具有bool指示坡度是否已定义的 a。我希望能够做到以下几点:

if(my_line){
   double new_slope = my_line.slope * 9;
}

其中实例my_line本身在布尔上下文中隐式转换为真/假值。我正在考虑使用智能指针看到的行为,如果它指向nullptror 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在C ++ 11上下文中使用std :: optional

在C#中的动态上下文中使用关键字

在 2legged 上下文中使用 c# forge 包中的 x-user-id

在严格的上下文中,在C中使用双链表,这是插入元素的正确方法?

如何在C#中使用其他上下文中的变量

在lldb表达式上下文中使用Objective-C创建一个类

无法创建类型为“匿名类型”的常量值。在此上下文中仅支持原始类型或枚举类型。在 Linq C#

此上下文中仅支持原始类型或枚举类型 C# 链接

在C#泛型类型的上下文中,什么是类型标识?

使用“typename”关键字将非类型“pcl::PointCloud<PointT>::Ptr [with PointT=T]”视为依赖上下文中的类型C/C++(2675)

Objective C - 不在@implementation 上下文中的方法定义

C:使用 * 与 [ ] 定义数组。上下文:更新函数中的数组参数

在C#中不安全代码的上下文中什么是不受信任的程序集

事件,在C#中的操作-在线程上下文中

在C#中的程序集上下文中,激活作用域指的是什么?

如何修复错误,名称“ ”在 c# 中的当前上下文中不存在

在EF数据库上下文中两次使用相同的c#模型

在C ++ std :: function上下文中无效使用void表达式

C 中上下文中的 Valgrind 错误

未评估上下文中的lambda(直到C ++ 20)

在 C 编程语言的上下文中,什么是产生式?

在C#Web应用程序中使用泛型时,initializecomponent()在当前上下文中不存在

如何在ios 9,目标C中使用“在当前上下文中”演示以编程方式导航到另一个视图控制器

为什么要在C#中定义一个局部函数以立即调用它(在IEnumerable <T>的上下文中)

在静态上下文中使用泛型类型

在类型依赖的上下文中使用constexpr

如何在 winevt.h Windows C++ API 中的 EvtSubscribe 中使用上下文参数

在布尔上下文中使用的非布尔值 (UInt16)

为什么收到“ TypeError:在布尔上下文中使用的非布尔(DataArrays.NAtype)”?