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)) {}
};