好的,我有点坚持尝试为我的模板类重载 << 运算符。要求是 << 运算符必须调用为此类定义的 void 打印函数。
以下是模板标题中的重要内容:
template <class T>
class MyTemp {
public:
MyTemp(); //constructor
friend std::ostream& operator<< (std::ostream& os, const MyTemp<T>& a);
void print(std::ostream& os, char ofc = ' ') const;
这是我的打印功能,基本上它是一个向量并将最后一个元素打印到第一个:
template <class T>
void Stack<T>::print(std::ostream& os, char ofc = ' ') const
{
for ( int i = (fixstack.size()-1); i >= 0 ; --i)
{
os << fixstack[i] << ofc;
}
}
这就是我如何让 operator<< 重载:
template <class T>
std::ostream& operator<< (std::ostream& os, const Stack<T>& a)
{
// So here I need to call the a.print() function
}
但我收到“未解析的外部符号”错误。所以真的我想我有两个问题。首先,是解决上述错误的方法。其次,一旦解决了这个问题,我会在 << 重载中调用 a.print(os) 吗?我知道它需要返回一个 ostream。任何帮助将不胜感激!