最近带本科生的数据结构实验课,用C++实现,习惯将模板类的定义与实现分开,分别写在头文件“SeqList.h”和cpp文件“SeqList.cpp”中。然而编译后运行总是出现链接错误,经查资料发现,目前大多数的编译器不支持将模板的定义与实现分开。
有两种方法来解决这个问题。一是将定义与实现都写进头文件里,另一个是在需要使用该模板类的地方添加实现该类的.cpp文件,如“#include "SeqList.cpp"”。简单示例如下所示:
//--------------------------使用VS2012beta--------------------------
//---------------------------Test.h----------------------------
#pragma once
#include "stdafx.h"
using namespace std;
template <class Type>
class Test
{
public:
Test(void);
Test(int x);
~Test(void);
Print();
};
//--------------------------Test.cpp-------------------------------
#include "stdafx.h"
us