Typedef强制类型的属性

时间:2019-02-22 17:39:18

标签: c++ types type-conversion

我想创建自己的类型,该类型在运行时声明某些属性,但在行为上却与另一种类型完全相同。

为了更好地理解我的意思,假装暂时不存在无符号整数类型,我想基于int创建自己的类型来表示它们。

我可以执行以下操作:

struct uint {
    int val;
    uint(int v) : val (v) {
         assert(v >= 0);
    }

但是我不能用我的uint结构来代替int,因为我现在必须调用uint.val来访问值。我希望uint的行为与int相同,但是在构造过程中添加了运行时检查,以确保该值大于零。

Go通过类型嵌入

type myint {
    int
}
func New(int v) myint {
    // Check v > 0
}

并且Rust具有类型别名

type myint = int;
impl myint {
    fn New(int v) -> myint {
        // check that v > 0
    }
}

在现代C ++中能否实现这样的目标?

0 个答案:

没有答案