类模声明不可与定义分离的原因

我在VC6。0下定义了一个模板类 
定义写在。H文件里 
为什么函数说明写在。C的文件里~~`如同一般的类一样~~~就编译不过去 
和说明写在一起就可以呢? 
如 

template <class   T> 
class   MyChain 

public: 
MyChain(); 
virtual   ~MyChain(); 
}; 

和 
template <class   T> 
MyChain <T> ::MyChain() 
{} 

template <class   T> 
MyChain <T> ::~MyChain(void) 



不知道为什么```请大侠门指点 
回复人:lw1a2(一刀   CSDN的等级,只和上网时间有关)   (   五级(中级))   信誉:101   2006-10-11   12:13:11   得分:1 
?   

模板类的包含编译模式,实现放在头文件里 
Top 
回复人:lw1a2(一刀   CSDN的等级,只和上网时间有关)   (   五级(中级))   信誉:101   2006-10-11   12:15:14   得分:10 
?   

模板类的定义不是真正定义了一个类 

只有实例化的时候,才根据类型定义了一个类 

实例化的时候,要求能“看”到模板的定义 
Top 
回复人:todototry()   (   二级(初级))   信誉:100   2006-10-11   12:21:18   得分:10 
?   

模版本身并不是个定义,当实体化的时候才完成了定义,然后拿这个定义才能去建立对象, 
所以放的一起 
个人意见,高手多多指教 
Top 
回复人:goodluckyxl(被人遗忘的狗)   (   两星(中级))   信誉:166   2006-10-11   13:51:37   得分:9 
?   

.c文件vc会自动使用c编译器进行编译 
c不支持stl 
Top 
回复人:wanfustudio(知识之败,慕虚名不务潜修也)   (   五级(中级))   信誉:100   2006-10-11   14:09:33   得分:50 
?   

引用C++深层探索一段话: 

函数模板并不是真正的函数,。::只是c++编译器生成具体函数的一个“棋子”,所以, 
找们不能把函数馍板的声明和定义分开放在不同的文件里;譬如,我们在一个头文件声 
明函数模板,而在另一个c++文件中写出函数模板的定义,然后在臼己的源代码文件中 
包含头文件: 
这样做可以吗? 
不行。它里面只是一个函数模板,于编译诺没有看到任何调用函数的晤句,所以并不会生成具体的.真正的函数致最后链接程序因为找不到代表具体函数的符号而链楼失败- 

Top 
回复人:wanfustudio(知识之败,慕虚名不务潜修也)   (   五级(中级))   信誉:100   2006-10-11   14:11:03   得分:10 
?   

如果lz需要我可以把这本书发给你 
上面用超星复制的文字,可能有点不通顺 
Top 
回复人:wanfustudio(知识之败,慕虚名不务潜修也)   (   五级(中级))   信誉:100   2006-10-11   14:11:15   得分:5 
?   

wanfu.liu@163.com 
Top 
回复人:akirya(坏[其实偶不是什么所谓的坏人])   (   三级(初级))   信誉:100   2006-10-11   14:30:58   得分:5 
?   

目前主流编译器不支持分离编译,即模板声明写到h文件中,实现写到cpp文件中。 
C++标准倒是规定有分离编译,不过对于编译器来说实现比较困难所以大多数编译器不支持(包括vc全系列) 
Top 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值