我有一个向量类(我正在重新创建std::vector),在它的开头,我使用typedef来重新定义一些名称。特别是,我有这四行代码:
typedef RAIterator<pointer> iterator;
typedef RAIterator<const_pointer> const_iterator;
typedef reverse_iterator<iterator> reverse_iterator;
typedef reverse_iterator<const_iterator> const_reverse_iterator;
reverse_iterator
和RAIterator
是我已经实现的其他类。第四行代码生成以下错误:
error: expected member name or ';' after declaration specifiers
typedef reverse_iterator<const_iterator> const_reverse_iterator;
如果我评论第四行,一切都很顺利。为什么会这样?
typedef reverse_iterator<iterator> reverse_iterator;
请仔细阅读:您正在尝试引入类型名称reverse_iterator
,但该名称已经存在:reverse_iterator
模板化类
如果你想让模板reverse_iterator<>
实际上是一个reverse_iterator<iterator>
,你应该求助于默认的模板参数。