下面是next_value类的代码:
template< class return_type>
structnext_value
{
return_type next()
{
while ( is_current_value_used())
increment();
return get_current_value();
}
protected:
typedefnext_value< return_type> this_class;
next_value()
{}
//允许导出类的考虑构造(copy-construction)。
next_value( const this_class & from)
{}
protected:
virtual boolis_current_value_used() const = 0;
virtual void increment() = 0;
virtual return_typeget_current_value() const = 0;
};
你可以继承该类,实现is_current_value_used、increment、get_current_value。你可以用next()函数来得到客户代码的下一个唯一值。