是否有可能有模板化类,还可以使用某种其他类型对构造函数进行模板化?使用模板化构造函数(其他类型)的模板类
是这样的:
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