读书人

模板类的定义与实现分别放在.h和.cpp中

发布时间: 2012-02-13 17:20:26 作者: rapoo

模板类的定义与实现分别放在.h和.cpp中,VC6编译的时候报错
// ------------------
// Main.cpp - begin

#include "Tree.h "

int main()
{
Tree <int> t;

return 0;
}

// Main.cpp - end
// ------------------


// ------------------
// Tree.h - begin

#ifndef _TREE_H
#define _TREE_H

#include "iostream.h "


template <class T>
class Tree
{
private:
T cContent;

public:
Tree();
~Tree();

int SetContent(T cContent);
T GetContent();

};

#endif

// Tree.h - end
// ------------------


// ------------------
// Tree.cpp - start

#include "Tree.h "

template <class T>
Tree <T> ::Tree()
{
cout < < "Tree " < <endl;
return ;
}

template <class T>
Tree <T> ::~Tree()
{
return ;
}


template <class T>
T Tree <T> ::GetContent()
{
return cContent;
}

template <class T>
int Tree <T> ::SetContent(T cContent)
{
this-> cContent = cContent;
return 0;
}

// Tree.cpp - end
// ------------------


[解决办法]
贴个pongba的blog链接:
http://blog.csdn.net/pongba/archive/2003/10/24/19130.aspx
因为当前很少有编译器能实现模板的分离式编译
[解决办法]
用export关键字可以实现,但现在貌似还没有compiler支持.
期待下一代C++吧.

现在的解决办法就是:先把它们都放到.h文件里吧.
[解决办法]
这个目前几乎所有常用的编译器都要报错。
[解决办法]
编译器不能识别这种模板方式

读书人网 >C++

热点推荐