具有不变量的快速int类型? C ++

时间:2016-09-11 14:40:03

标签: c++ user-defined-types

是否有一种快速方法可以在构造函数中定义具有int成员和不变量的类型...

e.g。

${a.name}

...然后将类型设置为可用作int?

class Age {
public:
    Age(int age) {
        Expects(0 <= age && age <= 125);
        age_ = age;
    }
private:
    int age_;
}

(或者是覆盖所有运营商的唯一方法?)

谢谢,约翰。

2 个答案:

答案 0 :(得分:3)

您可以添加operator int()返回值,它可以作为整数使用。

答案 1 :(得分:1)

Expects可以拼写为assert(),然后您可以通过转换运算符公开年龄,这将允许您的所有其他操作正常工作:

class Age {
public:
    Age(int a) : age_(a) {
        assert(0 <= age_ && age_ <= 125);
    }

    operator int() const { return age_; }

private:
    int age_;
};

侧边限制年龄为125有点悲观。梦想大!