我在为泛型类型的向量声明迭代器时遇到问题。代码如下:
template <class T> void print(const vector<T>& V )
{
vector<T>::const_iterator i;
}
以下返回预期的错误;于我之前'。如果我特别说明不会有错误vector<int>::const_iterator i;
有没有办法解决这个问题?
我在为泛型类型的向量声明迭代器时遇到问题。代码如下:
template <class T> void print(const vector<T>& V )
{
vector<T>::const_iterator 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;
}