C++模板类的问题求指教
//代码//main.cpp
#include <iostream>
using namespace std;
#include "AdjMatrixGraph.h"
void main()
{
AdjMatrixGraph<int> a(5,DG);
system("pause");
}
//AdjMatrixGraph.h
#define INFINITY 0xffffffffL //表示有权图中的无穷大
typedef long AdjType; //顶点关系类型。对无权图,用1或0表示是否相邻;
//对带权图,则用对应权值或INFINTY表示是否相邻
typedef enum{DG=1,UDG,DN,UDN} GraphKind;//{有向图,无向图,有向网,无向网}
template <class VRType> //VRType是顶点的数据类型
class AdjMatrixGraph
{
private:
int vexnum,arcnum;//顶点数,边数
VRType *vexs; //顶点向量
AdjType **arcs; //邻接矩阵
GraphKind kind; //图的类型
public:
AdjMatrixGraph();
AdjMatrixGraph(int,GraphKind);
void CreateGraph();
~AdjMatrixGraph();
};
//AdjMatrixGraph.cpp
#include "AdjMatrixGraph.h"
template <class VRType>
AdjMatrixGraph<VRType>::AdjMatrixGraph()
{
}
template <class VRType>
AdjMatrixGraph<VRType>::AdjMatrixGraph(int VexNum,GraphKind Kind)
{
vexnum = VexNum;
vexs = new VRType[vexnum];//为顶点向量分配存储空间
//为邻接矩阵分配存储空间同时初始化
arcs = new AdjType*[vexnum];
while(VexNum-->0)
{
*(arcs+VexNum) = new AdjType[vexnum];
*(arcs+VexNum) = {0};
}
}
template <class VRType>
AdjMatrixGraph<VRType>::~AdjMatrixGraph()
{
delete[] vexs;
while(vexnum-->0) delete[] *(arcs+vexnum);
delete[] arcs;
//main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall AdjMatrixGraph<int>::~AdjMatrixGraph<int>(void)" (??1?$AdjMatrixGraph@H@@QAE@XZ),该符号在函数 _main 中被引用
1>main.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall AdjMatrixGraph<int>::AdjMatrixGraph<int>(int,enum GraphKind)" (??0?$AdjMatrixGraph@H@@QAE@HW4GraphKind@@@Z),该符号在函数 _main 中被引用
1>E:\Myprojects\VS2010\数据结构\Debug\图的基本实现.exe : fatal error LNK1120: 2 个无法解析的外部命令