类模板的构造函数问题,求助

_hereiam 2008-11-20 12:47:44
// h1.h
#include <string>
#include <iostream>
using namespace std;

template <class Key, class Value>
class m_Hash {
public:
m_Hash (int s=0x100000);
int size;
};


// c1.cpp
#include "h1.h"

template<class Key, class Value>
m_Hash<Key, Value>::m_Hash (int s)
:size(s){

}


// test.cpp
#include "h1.h"

void main( void )
{
m_Hash<string, int> mh;
}

// 错误是这样的:
error LNK2001: unresolved external symbol
"public: __thiscall m_Hash<class std::basic_string<*>,int>(int)"

求助各位大侠!
...全文
113 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
就呆在云上 2008-11-20
  • 打赏
  • 举报
回复
// h1.h 
#include <string>
#include <iostream>
using namespace std;

template <class Key, class Value>
class m_Hash {
public:
m_Hash (int s=0x100000);
int size;
};


// c1.cpp
#include "h1.h"

template <class Key, class Value>
m_Hash <Key, Value>::m_Hash (int s)
:size(s){

}


这个年头,没有编译器是100%标准的,呵呵
模板的分离编译是不行的。
因此模板的声明和定义要放在一个文件里面的
太乙 2008-11-20
  • 打赏
  • 举报
回复
// h1.h 
#include <string>
#include <iostream>
using namespace std;

template <class Key, class Value>
class m_Hash {
public:
m_Hash (int s=0x100000);
int size;
};


// c1.cpp
//#include "h1.h"

template <class Key, class Value>
m_Hash <Key, Value>::m_Hash (int s)
:size(s){

}


// test.cpp
//#include "h1.h"

void main( void )
{
m_Hash <string, int> mh;
}

放在一个文件里好使


lz用 的vc6.0?


模板的定义和实现最好放在一个文件!

liumingrong 2008-11-20
  • 打赏
  • 举报
回复
模板不要分离定义,目前一般编译器不支持
xuhb95083023 2008-11-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 _hereiam 的回复:]
谢谢两位了!是在VC6.0下。
[/Quote]

研究模板的话,建议不要用vc6.0和vc7.0,这两个编译器对模板的支持太差了
_hereiam 2008-11-20
  • 打赏
  • 举报
回复
谢谢两位了!是在VC6.0下。

65,210

社区成员

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

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