C++ 错误:应为(‘;)’;在‘之前;启动&x2019;当我继承std::vector时

C++ 错误:应为(‘;)’;在‘之前;启动&x2019;当我继承std::vector时,c++,C++,这是我的代码,它在向量(迭代器开始,迭代器结束) 名称空间{ 模板 类向量:public std::vector{ 公众: vector():std::vector(){} 向量(std::initializer_list l):std::向量(l){ 使用std::vector::迭代器; 向量(迭代器开始,迭代器结束):std::vector(开始,结束){ }; } int main(int argc,字符**argv){ 向量v{1,2}; 返回(0); }; 完整错误输出: /hom

这是我的代码,它在
向量(迭代器开始,迭代器结束)

名称空间{
模板
类向量:public std::vector{
公众:
vector():std::vector(){}
向量(std::initializer_list l):std::向量(l){
使用std::vector::迭代器;
向量(迭代器开始,迭代器结束):std::vector(开始,结束){
};
}
int main(int argc,字符**argv){
向量v{1,2};
返回(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) { }
“开始”之前的“
/home/rorooco/Dropbox/cs/ro-c/ex/ex.cc:15:29:错误:预期“)”
向量(迭代器开始,迭代器结束):std::vector(开始,结束){

如何使其工作?

使用std::vector::iterator替换
带有

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

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

这个例子真的很小吗?这个错误到底发生在哪里?@UlrichEckhardt我认为这个例子很小,很清楚,还有确切的错误信息。根据错误消息,第
vector(迭代器开始,迭代器结束)行出现错误:std::vector(开始,结束){}
using typename std::vector<ET>::iterator;
//    ^^^^^^^^