我想超載< <運營商和使用好友功能。 下面的代碼塊工作得很好。嘗試超載時出錯<<運營商和使用好友功能
template <class T>
class Mystack{
friend std::ostream& operator<<(std::ostream& s, Mystack<T> const& d)
{
d.print(s);
return s;
}
};
因爲它是朋友函數,我顯然想要在類之外定義它,而不使用範圍解析運算符。但是,當我嘗試我得到錯誤。
template <class T>
class Mystack{
friend std::ostream& operator<<(std::ostream& s, Mystack<T> const& d);
};
template <class T>
std::ostream& operator<<(std::ostream& s, Mystack<T> const& d)
{
d.print(s);
return s;
}
下面是主要
Mystack<int> intstack;
std::cout << intstack;
錯誤代碼片段:未解決extrernal符號。
P.S:它不是完整的運行代碼。只是一個樣本。請忍受。
'class sample {'shouldnt that'class Mystack'? – Borgleader
哎呀我的壞! – tanz
當涉及到模板時,只需將所有內容放在頭文件中。這不值得頭痛。 –