爲什麼我不能使用相同的模板參數爲一個模板參數的朋友函數?我的意思是下面的代碼是可以的!運營商<<(ostream&os,...)模板類
template <class Vertex>
class Edge
{
template <class T>
friend ostream& operator<<(ostream& os, const Edge<T>& e);
/// ...
};
template <class T>
ostream& operator<<(ostream& os, const Edge<T>& e)
{
return os << e.getVertex1() << " -> " << e.getVertex2();
}
但這一個是不好的。爲什麼?問題是什麼? (我得到鏈接錯誤。)
template <class Vertex>
class Edge
{
friend ostream& operator<<(ostream& os, const Edge<Vertex>& e);
/// ...
};
template <class T>
ostream& operator<<(ostream& os, const Edge<T>& e)
{
return os << e.getVertex1() << " -> " << e.getVertex2();
}
一個朋友是一個模板,另一個是不。 – Xeo 2013-04-22 09:20:05