模板类中如何声明友类

piaozi2003 2003-10-19 12:54:55
我是C++初学者,遇到以下问题,手头也无C++语法详细资料。请各位帮忙解决!
声明链表结构
teplate<class T>
class ChainNode
{
friend class Chain; ------这里应该如何声明?
private:
.......
};

template <class T>
class Chain
{
.....
};

在VC7.0下编译提示Chain已经声明为非模板类,不能再生命为模板类,
那么,应该如何声明呢?我试过friend Chain<Type> || friend class Chain<Type>
都不行。声明,我没有系统学习过C++,找了本数据结构来学习C++,所以
很多语法不清楚?
...全文
119 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
piaozi2003 2003-10-20
  • 打赏
  • 举报
回复
昨天晚上在家里,在两个类之前做了一个Chain类的前向声明问题搞定!
template <class T>
class Chain{};

说实话,template,class,friend三者在一起已经就够复杂了,还
没有和override碰上,感觉C++有点过于求大,求全,什么都想有一个
优美、典雅的解决方案,结果搞的越来越复杂,编译器也难做。
过一时就散分。谢谢各位给我的思路。希望就C++多联系。
我的EMAIL piaozi2003@yahoo.com.cn。希望有机会和大家联系
ttlb 2003-10-19
  • 打赏
  • 举报
回复
不过vc71好像还不支持类模板的部分特化,遗憾哪,有时候很麻烦的。
ttlb 2003-10-19
  • 打赏
  • 举报
回复
我也是vc71,没问题。
Wolf0403 2003-10-19
  • 打赏
  • 举报
回复
template <class T>
class B
{
};

template<class T>
class A
{
public:
int a;
template<class B>
friend class B ;
};

VC 7.1 没有问题。
panzhaoping 2003-10-19
  • 打赏
  • 举报
回复
你说到点子上了
这可能是VC的一个BUG。我和其他几个研究生准备和我导师
一起向微软反映这件事。VC它不支持,摸版类中的莫版类或莫版函数
FOR EXAMPLE:
template<class T>
class A {
public:
int a;
template<class B>
class B ;
};
类B不能在类A的外面申明
template<class T>
template<class B>
class A<T>::B<B> {}
这种做法在<c++primer>中完全ok;
但在vc编译器中会报错的。
dlqcsdn 2003-10-19
  • 打赏
  • 举报
回复
是 template <class T> friend class Chain;
呢 还是friend template <class T> class Chain;哟?

ttlb 2003-10-19
  • 打赏
  • 举报
回复
template <class T> friend class Chain;
这样就行了。

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧