模板类中如何声明友类

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++,所以
很多语法不清楚?
...全文
112 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;
这样就行了。
后台管理文件夹:http://jyadmin.wrzc.net/,管理员帐号:admin,密码:admin 运行本程序,需要你的主机或者虚拟主机配置有php+mysql+zend optimizer的系统运行环境。 本机调试可以自己配置系统运行环境,配置教程请下载PHP环境一键安装包, 下载地址:http://www.wygk.net.cn/dow/phpmysqlzend.rar 可以用phpmyadmin去新建一个mysql数据库,比如数据库名为wrzcnet_phpjiaoyou,数据库用户名可用原来默认的root,或者再建一个数据用户和密码,比如root和root ●打开数据库文件下的data.txt,复制里面的内容,打开phpmyadmin,点击刚建的wrzcnet_phpjiaoyou数据库名,点“SQL”按钮,粘贴data4.0.txt的内容,运行这个sql脚本 ●然后修改程序/sub/config.php,把数据库链接信息填一下 //数据库帐号相关设置 $_ZEAICONN['dbserver'] = 'localhost'; #数据库的地址,本机可不修改 $_ZEAICONN['dbuser'] = 'root';#数据库的用户名,如填写空间商分配好的用户名 $_ZEAICONN['dbname'] = 'wrzcnet_phpjiaoyou';#数据库名称,如填写空间商分配好的数据库名 $_ZEAICONN['dbpass'] = 'root';#数据库的密码,如填写空间商分配好的密码 ●找到网站文件夹Rewrite,把它复制到D盘,并设置此目录给administrators组完全控制,users组读取和运行权限; 在iis里的服务器扩展里新建一个叫Rwrite的扩展名,指到D:\Rwrite\Rewrite.dll,点允许运行,打开iis,在前台站点上点右键>>属性>>ISAPI筛选器>>添加>>名称和服务器扩展里刚才建的对应 ●设置iis的Mime 类型属性以增加FLV视频和ANI支持 文件扩展名: .flv video/x-flv .ANI application/octet-stream 如虚拟主机调试,则将网站文件全部上传到空间商指定的文件夹下,并在空间商分配好的数据库执行data.txt以生成数据库,再修改数据库连接文件/sub/config.php即可。    什么是php版交友系统? php网上交友系统,是实现广大的网友之间双向交流选择而开发的一个交友婚恋网站系统正式版,并提供全部源码。多元化和清晰的界面设置使得系统的外观十分的友好。用户可以在交友网上注册资料、上传照片等,同时也可以自由设定年龄、地区、身高等各种搜索条件,查看其他会员的资料和相片。遇到心仪的会员,用户可以向会员发送站内信件联系或者赠送礼品。网站即时通讯功能,在线用户可以及时聊天。 注册用户可以在交友网俱乐部发帖回帖和其他会员交流生活、情感、兴趣爱好等心得以及反馈问题等,提供会员交流联系的平台,更有效的增加会员用户之间的联系交流途径。 谁适合使用交友系统,交友网站模板? 想建立一个交友,婚恋,征婚网站平台,让更多的人在自己的网站上交友找到配偶或者知已,或者想拥有一套类似世纪佳缘交友网页模板的人。 特色功能: 1、新增第三方合作网站登录模块,腾讯QQ和新浪微博,更加方便网友登录与注册 2、新增手机短信注册,Email验证注册和实名验证,拒绝垃圾会员 3、首页新增地区分站功能, 光明榜自动根据IP判断来源显示地区会员,点击选择,可自动出现二级城市按钮,匹配会员列表 4、新增我关注的人,会员可第一时间找到他(她)关注的交友对象 5、新增手机mini版交友 6、新增推广注册奖励,调动会员自发宣传网站,增加网站注册量,知名度,访问量 7、在原来录制视频的基础上,新增上传视频和外部调用视频地址功能,可调用56,youku等外部视频地址,节省流量 8、后台可以给会员发送站内信通知,可以自由选择给会员发送手机短信通知等 9、新增官方后台发布交友活动模块,与圈子交友活动完全独立分离 10、新增底部文章信息发布模块,可增加类目和相关文章及排序 11、新增后台数据自动备份及还原,照片视频自动打包下载模块 12、新增客服信息,在线支付账号,网站基本信息SEO关键词等移植到后台操作. 13、新增后台管理员权限级别任意分配模块 14、新增广告位若干,重新开发广告发布模块,更加方便快捷 15、在友情链接基础上增加合作伙伴图文模块 16、首页更改为大图广告位轮翻,和对联广告位等 17、简化导航栏,去掉了圈子,相册,日记,爱情诊所等,可根据实际情况随意增加上 18、重新开发规化了核心类模块及相关函数,性能负载
第1章 语言基础 1 1.1 基础语句 2 0001 注释的使用方法及注意事项 2 0002 使用汇编语言 2 0003 如何使用内联函数 2 0004 如何使用#define自定义宏 3 0005 使用goto语句进行无条件跳转 3 0006 while循环转为for循环 3 0007 do while循环的分析与使用 4 0008 利用条件运算符简化代码 4 0009 使用exit函数退出进程 5 0010 函数exit的注意事项 5 0011 调试无限循环 5 0012 控制台输入/输出 5 0013 delete与delete []的差别 6 0014 符号#、##、#@的用法 6 0015 将某个地址转换为指针 6 0016 常用内存分配及释放函数 6 0017 生成小于100的随机数 7 1.2 类型与变量 7 0018 静态变量的定义及应用 7 0019 使用全局变量的注意事项 7 0020 如何使用全局对象 7 0021 变量作用范围 8 0022 创建自己的变量类型 8 0023 如何声明同样类型的多个变量 8 0024 extern关键字的使用 9 0025 const关键字的应用范围 9 0026 去除const属性的转换 9 0027 使用enum定义类型 10 0028 定义只有零个元素的数组 11 0029 利用零进行初始化的对象 11 0030 初始化数组的简单方法 11 0031 结构体的字节对齐 11 1.3 模板与函数 12 0032 成员函数的模板不可以是虚函数 12 0033 利用递归函数计算阶乘 12 0034 函数模板的应用 13 0035 使用指针数组 13 0036 函数指针数组的应用 13 0037 函数重载的注意事项 14 0038 使用typename关键字 14 1.4 引用 14 0039 使函数返回多个值 14 0040 如何使用引用 15 0041 如何应用值传递参数 15 0042 赋值与初始化的区别 16 0043 如何初始化左值 16 1.5 名称空间 16 0044 为什么使用命名空间 16 0045 如何定义及访问命名空间 16 0046 利用命名空间解决命名冲突 17 0047 名称空间简单应用 18 0048 使用:: 运算符调用全局函数 18 0049 :: 使用命名空间的注意事项 18 1.6 继承 19 0050 两个类互为成员的声明 19 0051 为什么要避免直接存取数据成员 19 0052 避免使用memset初始化对象 19 0053 C++类成员初始化的顺序 19 0054 基类的析构函数应该是虚方法 20 0055 访问限定符分析 21 0056 访问其他类的私有成员函数 21 0057 如何定义友员类 22 1.7 多态 23 0058 纯虚函数的使用 23 0059 覆盖基类的成员函数 23 0060 如何应用多重继承 24 0061 如何利用虚函数实现动态绑定 25 0062 如何利用抽象类进行数据封装 25 0063 数据类型与类对象大小的区别 26 0064 实现类的强制转换 26 1.8 高级函数 27 0065 如何重载操作符 27 0066 如何定义重载函数 28 0067 默认构造函数 28 0068 复制构造函数 28 0069 this指针分析 29 0070 如何用非静态的类成员函数作为线程函数 29 0071 如何在常量函数修改数据成员 30 1.9 STL模板库 30 0072 为什么在程序广泛使用STL 30 0073 如何在STL使用容器 30 0074 STL算法的优点 31 0075 如何设计和使用STL迭代器 31 0076 使用STL需要包含哪些头文件 32 0077 STL简单应用 32 1.10 C++.NET语法 33 0078 在C++.NET如何判断空指针 33 0079 C++与C++.NET纯虚函数的区别 33 0080 C++.NET数据类型转换的方法 33 0081 在C++.NET如何定义具有输出参数的函数 33 0082 C++.NET如何实现方法的默认参数 33 0083 在C++.NET如何获取系统信息 34

64,648

社区成员

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

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