首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于模板与友元解决办法

2012-03-29 
关于模板与友元小弟初学,大大们指导~// 程序1没有问题template class Type class Tpl{template class T

关于模板与友元
小弟初学,大大们指导~

// 程序1 没有问题
template< class Type >
class Tpl
{
template< class T >  
friend ostream& operator<<( ostream& out, const Tpl<T>& it )
{
// 实现;
}
// 具体实现忽略
};

// 程序2 不行( 我看C++ Primer好像是这样的,是不是我理解有问题啊 )
template< class T >  
ostream& operator<<( ostream& out, const Tpl<T>& it ); // 声明

template< class Type >
class Tpl
{
// template< class T >  
friend ostream& operator<<( ostream& out, const Tpl<T>& it )
{
// 实现;
}
// 具体实现忽略
};


// 还有C++ Primer P555的一段程序,我看得有点糊涂啊,高手指点下
 template <class T>
 std::ostream& operator<<(std::ostream&, const Queue<T>&);
 template <class Type> class QueueItem {
  friend class Queue<Type>;
  // needs access to item and next
  friend std::ostream&
  operator<< <Type> (std::ostream&, const Queue<Type>&);
  // ??为啥还要加个<Type> ??
};
template <class Type> class Queue {
  // needs access to head
  friend std::ostream&
  operator<< <Type> (std::ostream&, const Queue<Type>&);
};

[解决办法]
VC6?珍惜生命,远离VC6
[解决办法]
有些写法不是所有的编译器都支持的
[解决办法]
template< class Type >
class Tpl
{
// template< class T >
friend ostream& operator<<( ostream& out, const Tpl<T>& it ) //这地方不是T,是Type啊
{
// 实现;
}
// 具体实现忽略
};

热点排行