使用 typedef 重定义:声明说明符之后的预期成员名称或';'



我有一个向量类(我正在重新创建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_iteratorRAIterator是我已经实现的其他类。第四行代码生成以下错误:

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>,你应该求助于默认的模板参数。

最新更新