ジェネリック型のベクトルのイテレータを宣言するのに問題があります。次のようにコーディングします。
template <class T> void print(const vector<T>& V )
{
vector<T>::const_iterator i;
}
以下は、予期されるエラーを返します。'i'の前。私が具体的に述べればエラーはありませんvector<int>::const_iterator i;
問題を解決する方法はありますか?
ジェネリック型のベクトルのイテレータを宣言するのに問題があります。次のようにコーディングします。
template <class T> void print(const vector<T>& V )
{
vector<T>::const_iterator i;
}
以下は、予期されるエラーを返します。'i'の前。私が具体的に述べればエラーはありませんvector<int>::const_iterator i;
問題を解決する方法はありますか?
const_iterator
は に依存しているため、このコンテキストでは従属名T
です。typename
キーワードで明示的に修飾しない限り、型に名前を付けないものと見なされます。
template <class T> void print(const vector<T>& V )
{
typename vector<T>::const_iterator i;
}
これを行う必要があります:
template <class T> void print(const vector<T>& V )
{
//T is a dependant type so needs typename
typename vector<T>::const_iterator i;
}