是否有可能有模板化類,還可以使用某種其他類型對構造函數進行模板化?使用模板化構造函數(其他類型)的模板類
是這樣的:
template<typename T1>
class Foo{
template<typename T2>
Foo(T1 aBar, T2 dummyArgument){
bar = aBar;
bytesOfT2 = sizeof(T2);
};
int bytesOfT2;
T1 bar;
};
這可能嗎?如果是的話,我會如何調用這樣的構造函數?我是否需要考慮有關標題和cpp文件的內容?
謝謝!
//編輯:我的特殊示例實際上甚至更復雜一點。我有
template <typename U1, U2>
class Foo{
U1 var1;
U2 var2;
};
template <typename T1>
class Bar{
template<typename T2, typename T3>
Bar(Foo<T2,T3> aFoo, T1 aVal){
val=aVal;
bytesOfT2=sizeof(T2);
bytesOfT3=sizeOf(T3);
};
int bytesOfT2;
int bytesOfT3;
T1 val;
};
是否意味着我可以在這裏調用構造函數只是Foo類型的任何變量,它會自動選擇合適的構造acording到富的特定版本(例如,如果我傳遞變量是請鍵入Foo,它應該自動將T2設置爲布爾型,T3將自動設置爲浮點型)?
你說的意思是「我需要考慮的頭部和cpp文件的方面的東西嗎?」 – 2010-10-21 00:10:11
mmmh - 由於某些原因(我不記得),有時我不得不放置一行,如「模板類Foo;」到cpp文件中,如果我想要能夠使用具有模板類型bool的Foo類。 (所以我需要爲模板類使用的每種類型都做到這一點) –
Mat
2010-10-21 00:12:45
啊。您可以閱讀[C++ FAQ Lite](http://www.parashift.com/c++-faq-lite/templates.html#faq-35.12)中的原因(該條目和以下條目討論「問題」以及如何解決問題;實際上,通常最好在頭文件中實現整個模板)。 – 2010-10-21 00:17:46