如何在外部定义模板类(vc6.0)

leeajax 2003-06-30 10:11:04
类头文件:
#ifndef XARRAY_HPP
#define XARRAY_HPP
template <class T> class XArray
{
public:
XArray();
virtual ~XArray();
};
#endif

类源文件
#include "XArray.hpp"
#include <iostream>
using namespace std;
template <class T>
XArray<T>::XArray()
{
cout<<"construction\n";
}
template <class T>
XArray<T>::~XArray()
{
cout<<"destruction\n";
}
测试类文件
#include "xarray.hpp"
#include <iostream.h>
int main()
{
XArray<int> arr;
cout<<"hello\n";
return 0;
}
用vc6和devcpp总会出连接错误,因该怎样解决这个问题,
...全文
50 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
leeajax 2003-06-30
  • 打赏
  • 举报
回复
除了以上的方法还有没有其他办法?
aiyinsitan 2003-06-30
  • 打赏
  • 举报
回复
你可以在头文件中声明, 在一个程序文件中包含该头文件。

C++标准规定了关键字export, 但vc6不支持, 事实上很少
有实现支持(就我所知, gcc,vc7,bcb6等很多主流编译器
都不支持, 好象出美圆可以下载到的comeau c/c++)
boyfling 2003-06-30
  • 打赏
  • 举报
回复
有一个关键字可以支持这种情况的。记不得了。好像vc下面也不行的。
声明和实现都写在头文件里面就可以了。
lzh7800 2003-06-30
  • 打赏
  • 举报
回复
这样改写,
类头文件:
#ifndef XARRAY_HPP
#define XARRAY_HPP
template <class T> class XArray
{
public:
XArray();
virtual ~XArray();
};
#endif

测试类文件
#include "XArray.h"
#include <iostream>
using namespace std;

template <class T>
XArray<T>::XArray()
{
cout<<"construction\n";
}
template <class T>
XArray<T>::~XArray()
{
cout<<"destruction\n";
}
int main()
{
XArray<int> arr;
cout<<"hello\n";
return 0;
}
MaiCle 2003-06-30
  • 打赏
  • 举报
回复
模板的定义和实现必须在一个文件里!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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