关于c++中类的模板,惯常的用法都是把实现和定义放在头文件里了事。这样的问题是,加大了头文件的长度,减低了模板代码的可读性,还有就是破坏了面向对象的隐藏实现的规则。下面就是这种问题的两个解决方案的总结。
//定义头文件a.h
template <class T>
calss a
{
public:
a();
void methoda();
};
#定义实现文件a.cpp
export template <class T>
a<T>::a()
{
//方法的设计与实现
}
export template <class T>
void a<T>::methoda()
{
//方法的设计与实现
}
<!------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------!>
//简单调用程序的设计与实现
//定义头文件b.h
#include "a.h"
class b
{
public:
b();
void methodb();
a<b> *a1;
};
#定义实现文件b.cpp
#include "a.cpp"
b::b()
{
//方法的设计与实现
a1=new a<b>();
}
void b::methodb()
{
//方法的设计与实现
a1->methoda();
}