如何对类模板重载输出操作符?
template <class T> class SimChain;
ostream& operator<< ( ostream& os, const SimChain<T>& sim_chain );
template <class T>
class SimChain
{
friend ostream& operator<< ( ostream& os, const SimChain<T>& sim_chain );
public:
SimChain():first(-1){}
~SimChain(){Destroy();}
void Destroy();
int Length() const;
bool Find(int k, T& x) const;
int Search(const T& x) const;
SimChain<T>& Delete(int k, T& x);
SimChain<T>& Insert(int k, const T& x);
private:
int first;
static SimSpace<T> S;
};
编译的时候报错为:
class_templates.hpp(55) : error C2065: 'T' : undeclared identifier
小弟初学C++,请大虾们不吝赐教,谢谢!
问题点数:20、回复次数:2Top
1 楼cxc014(有心插柳柳不活,无心栽花花开花?)回复于 2006-03-04 15:40:10 得分 0
friend ostream& operator<< ( ostream& os, const SimChain<T>& sim_chain );
===>
template<class TT>
friend ostream& operator << (ostream&, const SimChain<TT>&);
==========================================================================
ostream& operator<< ( ostream& os, const SimChain<T>& sim_chain );
==>
template<class T>
ostream& operator<< ( ostream& os, const SimChain<T>& sim_chain );Top
2 楼ugg(逸学堂(exuetang.net))回复于 2006-03-04 20:22:10 得分 0
template <class T>
class SimChain
{
friend ostream& operator<< ( ostream& os, const SimChain<T>& sim_chain );
public:
SimChain():first(-1){}
~SimChain(){Destroy();}
void Destroy();
int Length() const;
bool Find(int k, T& x) const;
int Search(const T& x) const;
SimChain<T>& Delete(int k, T& x);
SimChain<T>& Insert(int k, const T& x);
private:
int first;
static SimSpace<T> S;
};
template<class T>// 添加这一句
ostream& operator<< ( ostream& os, const SimChain<T>& sim_chain );
Top




