C ++实现有界原始类型

时间:2018-10-26 18:36:48

标签: c++

我想创建浮点数和整数类型,以强制执行某些上限和下限,但其行为与原始浮点数和整数值相同。

我考虑过使用自己的重载operator=来构造结构以强制执行边界。

但是我看不到一个解决方案,该解决方案不涉及制作float / int成员变量并使用该变量代替常规的float / int

是否有一种方法可以使对象像原始类型一样使用?

1 个答案:

答案 0 :(得分:2)

  

我想创建浮点数和整数类型,以强制执行某些上限和下限,但其行为与原始浮点数和整数一样。

很好。您最好开始here,但当然您也可以自己编写。

  

我考虑过使用自己的operator =构造结构以强制执行边界

为我工作。

  

...涉及使float / int成员变量

是的

  

...并使用它代替常规的float / int

如果您担心到处写wrapper.value而不是wrapper的话,请不要。

您可以使用转化运算符(如链接答案的

)来处理所有这些问题
operator T const& () const { return val_; }

当您希望包装器类型隐式转换回原始类型时。

对于算术,如果您不想在原始类型和有界类型之间进行转换,则可以直接实现binary arithmetic operators