我想定义一个构造函数,它与任何具有begin,end,operator ++的构造函数一起工作。 换句话说,我想这种行为(评论说,工作代码):模板构造函数和typedef迭代器
/*Polyn(std::vector<double> &a) : CalcDerivative(0) , CalcIntegral(0) {
for(std::vector<double>::iterator i = a.begin();i < a.end();++i)
params.push_back(*i);
}*/
与其他迭代器。 (例如列表)。
template <typename T>
Polyn(const T &a) : CalcDerivative(0) , CalcIntegral(0) {
typename std::vector<T>::iterator iter;
for(iter i = a.begin();i < a.end();++i) //LINEA 18!!
params.push_back(*i);
}
我所得到的是这样的编译错误:
polyn.h: In constructor ‘Polyn::Polyn(const T&)’:
polyn.h:18: error: expected ‘;’ before ‘i’
为什么呢?如何解决我的代码?
你忘了“typedef”吗? – 2012-03-04 17:13:22
另外请注意,你要么传递'std :: vector'或使用'typename T :: const_iterator'(实际上你需要'const_iterator'在这两个cass。 –
2012-03-04 17:19:21
谢谢奥利查尔斯沃斯,我混淆了typename与typedef,对不起我的newbyness – jimifiki 2012-03-04 17:26:10