我正在嘗試編寫一個模板類,它可以根據我通過的<class>
形成類。問題是我無法在同一個.h
文件中聲明和定義。在我的項目中,UTF工具只能使用.cpp
文件(用於代碼覆蓋率等)。我在博客中看到他們說「添加.cpp
而不是.h
」。這是可取的嗎?模板類實現中單獨的.h和.cpp文件
Template.h
#ifndef TEMPLATE_H_
#define TEMPLATE_H_
template<class T>
class Template
{
public:
T Add(T a,T b);
};
#endif /* TEMPLATE_H_ */
Template.cpp
#include "Template.h"
template<class T>
T Template<T>::Add(T a, T b)
{
return a+b;
}
Main.cpp
#include "Template.cpp" //Is this a good practise?
#include <iostream>
int main(int argc, char **argv) {
Template<int> obj;
std::cout<<obj.Add(3,4)<<std::endl;
}
如果這是不可取的,然後我該如何解決這個問題? export
?
這並非嚴格對稱。儘管將定義放入每個翻譯單位是最方便的,並且因此是常見的做法,但這不是必需的。 – 2013-03-22 18:49:03
@MarkRansom是的,你是對的。但是,能夠「事先」完成所有需要的顯式實例是非常罕見的。 – Angew 2013-03-22 18:50:38