0
假設在.h文件中我有一個模板類聲明:模板類通用專業化獨立的CPP文件:許多模板參數
template<typename T1,
typename T2,
typename T3,
typename T4>
class A {
public:
A();
~A();
void method1();
void method2();
...
}
的模板參數的數量是受到改變,因爲這個API 仍然是不固定。我更喜歡在分離的.cpp文件中實現通用專業化。據我瞭解一個可寫(例如,用於構造函數):
template<typename T1,
typename T2,
typename T3,
typename T4>
A<T1, T2, T3, T4>::A() {
...
}
等爲每個類方法......這讓我生氣使用笨重的建設:
template<typename T1,
typename T2,
typename T3,
typename T4>
A<T1, T2, T3, T4>::
每次我實現A級方法。如果添加或刪除一個或多個模板參數 ,這將是一個大問題。 我可以使用一些C++語言功能(最高C++ 11)來避免這種情況嗎?早期我看到一個預處理器宏來做到這一點,但它是醜陋的,我認爲:)
'我更喜歡以實現分離的.cpp file'通用專業化的方式沒有變化 - 的用戶您模板也必須看到這個專門化才能使模板實例化成爲可能,所以除非你準備在這個.cpp中明確地實例化A的版本,否則你也可以把這個實現放在.h文件中。 – marcinj
可以使用C++ 11中的變量模板。檢查http://eli.thegreenplace.net/2014/variadic-templates-in-c/ – Mrnell