关于类模版:如何实现类模版设计与实现分离的分离编译模式
对于模版函数可以这样:
// templatefunc.h
#ifndef TEMPLAFUNC_H
#define TEMPLAFUNC_H
template <typename T> int compare(const T&, const T&);
#include "templafunc.cpp"
#endif
// templafunc.cpp
template <typename T> int compare(const T &v1, const T &v2)
{
if(v1 < v2) return -1;
if(v2 < v1) return 1;
return 0;
}
// main.cpp
#include <cstdlib>
#include <iostream>
#include "templafunc.h"
using namespace std;
int main(int argc, char *argv[])
{
cout << compare(3,4) << endl;
t.print();
system("PAUSE");
return EXIT_SUCCESS;
}
// OK!
____________________________________________________
而对于类模版, 我可以这样完成做
// templafunc.h 包含类模版的定义和成员的定义
#ifndef TEMPLAFUNC_H
#define TEMPLAFUNC_H
template <typename T>
class Test
{
public:
Test(T);
void print();
private:
T a;
};
template<typename T> Test<T>::Test(T r) : a(r){}
template<typename T> void Test<T>::print()
{
cout << a << endl;
}
#endif
// main.cpp
#include <cstdlib>
#include <iostream>
#include "templafunc.h"
using namespace std;
int main(int argc, char *argv[])
{
Test<int> t(10.6);
t.print();
system("PAUSE");
return EXIT_SUCCESS;
}
//OK, 然而这样就不得不把类模版的成员定义也写到头文件中,为了能够将设计与实现分离,我按照最上面的函数的形式组织代码,但是编译过不了,请指教应该如何安排这种代码,谢谢