5D空间

学习总结与经验交流

   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::

  c++标准定义了export来实现模板的声明与实现的分离。很遗憾,现在很多编译器没有支持,包括我现在使用的vs2010。
  有一些其他的方法。这里介绍一种。

  首先,在.h文件中声明模板,并在最后包含相应的cpp文件。然后将实现写在cpp文件中。乍一看很别扭,仔细一想其实是合情合理的。不是要求声明和定义在一起,且声明出现在定义之前么,这样写,.h文件就符合要求了。

类模板声明

//This is MyClass.h

#include 
<iostream>
using namespace std;

template
< typename T >
class MyClass
{
public:
   T function( 
const T & );
}
;

#include 
"Myclass.cpp"

类模板定义
//This is MyClass.cpp

template
< typename T >
T MyClass< T >::function( 
const T &ref )
{
   cout 
<< "this is my class" << endl;
   
return ref;
}


int MyClass< int >::function( const int &ref )
{
   cout 
<< "this is int class" << endl;
   
return ref;
}

  
  这里cpp文件中顺便演示了一下如何重载特定类型的模板特化。
posted on 2011-04-05 02:01 今晚打老虎 阅读(2114) 评论(5)  编辑 收藏 引用 所属分类: 学习笔记

评论

# re: 模板的声明与实现的分离方法 2011-04-05 15:01 空明流转
这样不好。应该是
.h
.imp.h
.cpp
这样的结构。

另外如果只有有限的特化可以选择template tmp<int>;这样的方式进行显式特化。
  回复  更多评论
  

# re: 模板的声明与实现的分离方法 2011-04-05 17:13 今晚打老虎
@空明流转
请教更多细节。  回复  更多评论
  

# re: 模板的声明与实现的分离方法 2011-04-06 16:43 陈梓瀚(vczh)
@空明流转
直接写一起不就好了  回复  更多评论
  

# re: 模板的声明与实现的分离方法 2011-04-06 20:00 right
.hpp
.inl
.cpp
  回复  更多评论
  

# re: 模板的声明与实现的分离方法 2011-04-11 12:32 EvilGhost
很遗憾,这种方法仅仅便于代码管理,还是不能绕开实现依赖,编译效率仍然没有提高。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理