错误:期望')'在'start'之前,当我继承std :: vector时

时间:2016-03-16 05:35:47

标签: c++

这是我的代码,它会在vector<ET>(iterator start, iterator end)

中引发错误
namespace ro {
    template<typename ET>
    class vector : public std::vector<ET> {
    public:
        vector<ET>() : std::vector<ET>() { }
        vector<ET>(std::initializer_list<ET> l) : std::vector<ET>(l) { }
        using std::vector<ET>::iterator;
        vector<ET>(iterator start, iterator end) : std::vector<ET>(start, end) { }
    };
}
int main(int argc, char **argv) {
    ro::vector<int> v{1, 2};
    return (0);
};

完整的错误输出:

/home/roroco/Dropbox/cs/ro-c/ex/ex.cc:15:29: error: expected ‘)’ before ‘start’
         vector<ET>(iterator start, iterator end) : std::vector<ET>(start, end) { }

如何让它发挥作用?

1 个答案:

答案 0 :(得分:1)

using std::vector<ET>::iterator;替换为

using typename std::vector<ET>::iterator;
//    ^^^^^^^^

没有typename编译器无法确定iterator是成员字段/函数还是类型。因此编译器假定它是一个字段/函数。