const成员的构造函数初始化未通过验证

时间:2017-03-07 13:44:16

标签: c++ constructor initialization

class foo 
{ 
    private:          
        const int _n;

    public: 
        foo(int n) : _n(n)
        {
            if(!nIsValid(_n))
                throw "bad value";
        }
};

上面的代码检查_n是否具有良好的值,但仅在它被初始化之后。

如果一个人不能允许_n - 或某个更复杂的类型而不是一个人无法控制 - 要被错误地初始化,那么如何在初始化_n之前检查n是否正常,例如,使用辅助函数?

class foo 
{ 
    private: 

        int IsValid(int & _n)
        {

            if(!IntChecker(_n))
                throw "bad value";
            else
                return _n;
        }

        const bar _n;

    public: 

        foo(int n) : _n(IsValid(n)) {}
};

0 个答案:

没有答案