error LNK2019: 无法解析的外部符号 "public: void __thiscall

liuxuan89 2009-04-05 09:32:26
我在头文件中声明:
template < class T >
class list {
......
void del ( node <T> *target ) ;
......

在源文件中实现如下:
template < class T >
void list < T > :: del ( node<T> *target ) { ......

为什么会 “error LNK2019: 无法解析的外部符号 "public: void __thiscall list<int>::del(struct node<int> *)" (?del@?$list@H@@QAEXPAU?$node@H@@@Z),该符号在函数 "public: int __thiscall stack<int>::pop(void)" (?pop@?$stack@H@@QAEHXZ) 中被引用” ?

而只要我把函数定义内联到类定义内部就不会出错?

编译器:VS2008
...全文
1165 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxuan89 2009-04-05
  • 打赏
  • 举报
回复
谢谢,通过。总算明白《C++编程思想》里的那段话了。
Paradin 2009-04-05
  • 打赏
  • 举报
回复
模板不能分离编译
在头文件里面最后包含源文件,
//xxx.h
...
template <class T>
class...


#include“xxx.cpp”

原因见:http://hi.baidu.com/spacetimer/blog/item/de4ba0ef7505b016fdfa3cc8.html

65,211

社区成员

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

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