读书人

关于模板与友元解决办法

发布时间: 2012-03-29 12:53:12 作者: rapoo

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

// 程序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啊
{
// 实现;
}
// 具体实现忽略
};

读书人网 >C++

热点推荐