【发布时间】:2015-01-11 04:27:36
【问题描述】:
我正在尝试重载 运算符并使用友元函数。 下面的代码块工作得很好。
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;
}
下面是 main 的代码 sn-p
Mystack<int> intstack;
std::cout << intstack;
错误:未解析的外部符号。
P.S:它不是完整的运行代码。只是一个样本。请多多包涵。
【问题讨论】:
-
class sample{不应该是class Mystack? -
涉及模板的时候,只要把所有的东西都放在头文件里。这不值得头疼。
-
@NeilKirk 我收到 OP 的错误,所有内容都在一个文件中 see here
标签: c++