求助:一个模板继承的问题。

changhua4929 2003-09-12 01:35:48
类BaseChar、BaseInt都继承自类Base,三个类的定义分别在basechar.h baseint.h base.h 中,如下所示:

**********
base.h
**********
template<class T>
class Base
{
...
};

*************
baseChar.h
*************
#include<base.h>
class BaseChar:public Base<char>
{
...
};

***********
baseInt.h
***********
#include<base.h>
class BaseInt:public Base<int>
{
...
}

主程序如下,编译时报错:
#include<iostream.h>
#include "baseInt.h"
#include "baseChar.h"
void main()
{
...
}

但如果我把三个类的定义都放在主程序中就没有问题了,这是为什么呢?有没有什么办法使三个类的定义分别保存在三个头文件中,而能正常使用呢?高人请指点一下(ps:我用的编译器为vc6.0)。
...全文
37 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
changhua4929 2003-09-30
  • 打赏
  • 举报
回复
谢谢各位解答!
leyt 2003-09-28
  • 打赏
  • 举报
回复
#ifndef
#define
......

#endif
ac1998 2003-09-28
  • 打赏
  • 举报
回复



up.

up.
nirvana_li 2003-09-12
  • 打赏
  • 举报
回复
VC6.0有BUG~~~你在VC7.0里面编译试试看~~~~``
begginginstorm 2003-09-12
  • 打赏
  • 举报
回复
同意 jyfcsdn
是否没有加上这些防止重复定义的宏,如:
#ifndef
#define
#endif

另外,编译器报什么错误?可否贴出来,我也常这么用,没遇到这种问题的。
robertnet 2003-09-12
  • 打赏
  • 举报
回复
现在的编译器还没有达到楼主的要求,包括vs2003.模板的定义和声明都要放在同一个文件中。
changhua4929 2003-09-12
  • 打赏
  • 举报
回复
楼上各位,每个类的声明和定义都是放在一个.h中的,只是我没有在这里写出来。还有什么别的原因吗?
sevecol 2003-09-12
  • 打赏
  • 举报
回复
如果是没有放在一起的缘故的话,目前的解决方法只有放在一个文件内

等将来编译器支持了export才能分来分别放在h和cpp中。
jyfcsdn 2003-09-12
  • 打赏
  • 举报
回复
1、目前大多数编译器还不支持模板类的定义和申明分开的,所以你的base类最好都定义在base.h中,

2、你的.h文件中有没有加上保护宏
#ifndef
#define
#endif
否则可能有多重定义的编译错误
point_to 2003-09-12
  • 打赏
  • 举报
回复
这是编译器的事,vc6就是要求放在一起!
sevecol 2003-09-12
  • 打赏
  • 举报
回复
你是不是将你的模板类base的声明和实现分开了?

如果是的话,需要放在一个文件中。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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