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"を忘れましたか? –
また、 'std :: vector'を渡すか、 'typename T :: const_iterator'を使用することに注意してください(実際には両方のcassで' const_iterator'が必要です)。 –
Thanks Oli Charlesworth、typedefでtypenameを混乱させました。私のnewbyness – jimifiki