在树模板类中,通过以下方式从Iterator定义ConstIterator:
template <typename k_T, typename v_T>
class Tree<k_T, v_T>::ConstIterator : public Tree<k_T, v_T>::Iterator {
using parent = Tree<k_T, v_T>::Iterator;
public:
using parent::Iterator;
const std::pair<k_T, v_T>& operator*() const { return parent::operator*(); }
};
但我不清楚using parent::Iterator
正在做什么。
答案 0 :(得分:1)
它继承了parent
。
如果using声明引用了正在定义的类的直接基类的构造函数(例如使用Base :: Base;),那么该基类的构造函数将被继承[...] 继承的构造函数等效于用户定义的构造函数,它们具有空主体,并且具有由单个嵌套名称说明符组成的成员初始化程序列表,该列表将所有参数转发给基类构造函数。
请参阅继承构造函数: http://en.cppreference.com/w/cpp/language/using_declaration