好吧我有点卡住试图超载模板类的< <运算符。要求是运算符必须调用为这个类定义的void打印函数。operator << overloading调用打印函数的麻烦
下面是从模板头重要的东西:
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;
}
}
,这里是我如何有运营商< <过载:
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。任何帮助将不胜感激!
阅读此常见问题解答:http://www.parashift.com/c++-faq/templates.html#faq-35.16 – 2012-02-23 07:20:43
您在第一个片段中调用类模板“MyTemp”,在其他片段中调用“Stack”。你是否在你的真实代码中这样做? – 2012-02-23 07:21:57