我确实在我的应用程序中需要一个新的数据类型,该数据类型只能存储从-10到10的数字。是否有一种方法可以创建具有特定值的数据类型,如果该值无效,则会引发错误?我用过:
typedef int digit;
发生的事情是实际上创建了一个int的新数据类型。 我也尝试过:
typedef int{-10 > int value < 10} digit;
但它提出了这一点:
exit status 1
main.cpp:3:12: error: expected unqualified-id before '{' token
typedef int{-10 > int value < 10} digit;
^
main.cpp:3:35: error: 'digit' does not name a type; did you mean 'div_t'?
typedef int{-10 > int value < 10} digit;
^~~~~
div_t
答案 0 :(得分:1)
C ++没有这种功能。在某些情况下会很好,但是用这种语言提供语言并不是一件容易的事(某种程度上使用效率不高)。
您可以创建一个包装int
并进行自身边界检查的类(或者您希望类型起作用)。然后,您还必须包装所有算术运算。不太繁重,但脖子有点痛。而且,效率也不高(每个单个算术运算都需要一个分支!)。
通常,我们只使用int
并在需要时在更高级别上对代码逻辑进行检查。在不了解您的用例的情况下,我无法提出具体建议。
Here's an example会完成一半。