为什么会出错,是不是vc6.0的问题?

bobshi 2003-04-13 04:26:38
//dynamicclass.h

#ifndef DYNAMICCLASS_CLASS
#define DYNAMICCLASS_CLASS
template <class T>
class DynamicClass
{
public:
DynamicClass(const T& m1, const T& m2);
DynamicClass(const DynamicClass <T> &obj);

~DynamicClass(void);

DynamicClass<T>& operator = (const DynamicClass<T>& rhs);
private:
T member1;
T *member2;
};
#endif

//dynamicclass.cpp

#include <iostream>
#include "dynamicclass.h"
using namespace std;

template <class T>
DynamicClass<T>::DynamicClass(const T& m1, const T& m2)
{
member1=m1;
member2=new T(n2);
cout << "constructor:" << member1 << '/'
<< *member1 << endl;
}

template <class T>
DynamicClass<T>::DynamicClass(const DynamicClass<T>& obj)
{
member1=obj.member1;
member2=new T(*obj.member2);
cout << "copy constructor:" << member1 << '/'
<< *member2 << endl;
}

template <class T>
DynamicClass<T>::~DynamicClass(void)
{
cout << "destructor:" << member1 << '/'
<< *member2 << endl;
delete member2;
}

template <class T>
DynamicClass<T>& DynamicClass<T>::operator = (const DynamicClass<T>& rhs)
{
member1=rhs.member1;
member2=*rhs.member2;

return *this;
}

//dynamictest.cpp

#include <iostream>
#include "dynamicclass.h"
using namespace std;

int main(void)
{
DynamicClass<int> obj_1(1,100);
return 0;
}

//出现编译错误不知是什么原因,请大家帮忙。以下是编译错误

--------------------Configuration: dynamic - Win32 Debug--------------------
Linking...
dynamictest.obj : error LNK2001: unresolved external symbol "public: __thiscall DynamicClass<int>::~DynamicClass<int>(void)" (??1?$DynamicClass@H@@QAE@XZ)
dynamictest.obj : error LNK2001: unresolved external symbol "public: __thiscall DynamicClass<int>::DynamicClass<int>(int const &,int const &)" (??0?$DynamicClass@H@@QAE@ABH0@Z)
Debug/dynamic.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

dynamic.exe - 3 error(s), 0 warning(s)
...全文
38 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liushmh 2003-04-15
  • 打赏
  • 举报
回复
这个关于export关键字的问题经常有人问,目前c++好像只有vs.net2003支持这个东东
bobshi 2003-04-15
  • 打赏
  • 举报
回复
谢谢rushman(一线天) ( ) 解答。
rushman 2003-04-15
  • 打赏
  • 举报
回复
模板类的实现必须在调用处可见。这不是vc6的问题。

模板类(包括模板函数)的调用在编译时,编译器必须(起码现在的编译器是必需的)能“看”到此模板的实现代码,才能编译下去。
bobshi 2003-04-15
  • 打赏
  • 举报
回复
这个问题我解决了,但不知是什么原因。

是这个做的,把类的实现,和类的申明放在同一头文件中,就好了,大家说说看,是不是vc6.0 的问题呢?谢谢!!
oyd 2003-04-13
  • 打赏
  • 举报
回复
这个问题很常见
一般就是库文件无法链接上,可以看看工程的setting,在link那一栏加上必要的.lib文件

69,371

社区成员

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

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