爲什麼我不能在ostream重載中使用迭代器?重載迭代器的矢量模板的ostream
如果我使用相同的聲明使用迭代方法它的作品。
考慮下面的代碼:
template <class T>
class List {
template <class U>
friend ostream &operator<<(ostream &os, const List<U> &rhs);
private:
vector<T> v;
};
template<class U>
ostream & operator<<(ostream & os, const List<U>& rhs)
{
vector<U>::iterator it = rhs.v.begin();
return os;
}
int main()
{
List<int> list;
cout << list << endl;
return 0;
}
如果C++ 11可用於您的目標平臺,您可能希望將迭代器的類型聲明爲'auto',以便編譯器可以爲您推導正確的類型。在這個詞的兩個意義上打字要容易得多。 –