我想创建浮点数和整数类型,以强制执行某些上限和下限,但其行为与原始浮点数和整数值相同。
我考虑过使用自己的重载operator=
来构造结构以强制执行边界。
但是我看不到一个解决方案,该解决方案不涉及制作float
/ int
成员变量并使用该变量代替常规的float
/ int
。
是否有一种方法可以使对象像原始类型一样使用?
答案 0 :(得分:2)
我想创建浮点数和整数类型,以强制执行某些上限和下限,但其行为与原始浮点数和整数一样。
很好。您最好开始here,但当然您也可以自己编写。
我考虑过使用自己的operator =构造结构以强制执行边界
为我工作。
...涉及使float / int成员变量
是的
...并使用它代替常规的float / int
如果您担心到处写wrapper.value
而不是wrapper
的话,请不要。
您可以使用转化运算符(如链接答案的
)来处理所有这些问题operator T const& () const { return val_; }
当您希望包装器类型隐式转换回原始类型时。
对于算术,如果您不想在原始类型和有界类型之间进行转换,则可以直接实现binary arithmetic operators。