请各位大哥们帮帮我 一个C++的连接错误

ssy2008 2009-03-01 01:45:16
这是我根按照书上写的一个很简单的数组类
//Array.h
template<class T>
class Array{
protected:
int length;
Array<T>* head;
public:
Array(int n);
Array(const T& a,int n);
Array(const T* a,int n);
Array(const Array<T>& a);
~Array();
void print();
T& operator[](const int n);
};

//Array.cpp
template<class T>
Array<T>::Array(int n)
{
lenth=n;
head=new T[n];
}

template<class T>
Array<T>::Array(const T &a, int n)
{
length=n;
head=new T[n];
for(int i=0;i<n;++i)
head[i]=a;
}

template<class T>
Array<T>::Array(const T *a, int n)
{
length=n;
head=new T[n];
for(int i=0;i<n;++i)
head[i]=s[i];
}

template<class T>
Array<T>::Array(const Array<T> &a)
{
length=a.length;
head=new T[length];
for(int i=0;i<n;++i)
head[i]=a[i];
}

template<class T>
Array<T>::~Array()
{delete [] head;}

template<class T>
void Array<T>::print()
{
for(int i=0;i<length;++i)
cout<<head[i]<<" ";
cout<<endl;
}

template<class T>
T& Array<T>::operator[](const int n)
{
return head[i];
}

//main
int main()
{
aarray<int> a(10,9);
//
}

定义 a采用指针定义没问题,但按上面定义会出现错误:
s.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Array<int>::~Array<int>(void)" (??1?$Array@H@@QAE@XZ),该符号在函数 _main 中被引用
s.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall Array<int>::Array<int>(int const &,int)" (??0?$Array@H@@QAE@ABHH@Z),该符号在函数 _main 中被引用
D:\data_structure yanweimin\shunxuxianlingbiao\Debug\shunxuxianlingbiao.exe : fatal error LNK1120: 2 个无法解析的外部命令
...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
模板类声明跟定义都放在.h文件里,c++标准容器库的.h就是这样干的。
实在想分开就就加export关键字(我也不说这个关键字不能用了,怕别人喷我。。。)
ssy2008 2009-03-01
  • 打赏
  • 举报
回复
真的是这样但是两者加在一起有个错误:

d:\data_structure yanweimin\shunxuxianlingbiao\shunxuxianlingbiao\Array.h(28) : error C2440: “=”: 无法从“int *”转换为“Array<T> *” with
[
T=int
]
与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
d:\data_structure yanweimin\shunxuxianlingbiao\shunxuxianlingbiao\Array.h(26): 编译类 模板 成员函数“Array<T>::Array(int)”时
with
[
T=int
]
.\s.cpp(7): 参见对正在编译的类 模板 实例化“Array<T>”的引用
with
[
T=int
]
不知这样是怎么回事???
再求大哥解答一下!!!
ssy2008 2009-03-01
  • 打赏
  • 举报
回复
谢谢,我试下!!!!!!
sagegz 2009-03-01
  • 打赏
  • 举报
回复
使用模板类需要将成员函数的定义一起写在.h文件,不能分开!
你把Array.h与Array.cpp都放入Array.h就OK!

65,210

社区成员

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

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