我在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
定义写在。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