我想知道类似的事情是否可能。基本上,我有一个模板类,它偶尔会采用模板类的对象。我想将它(或只是一个成员函数)专门用于特定的模板类,但该类的“通用”形式。
template<typename T, typename S>
class SomeRandomClass
{
//put something here
};
template<typename T>
class MyTemplateClass
{
void DoSomething(T & t) {
//...something
}
};
template<>
void MyTemplateClass< SomeRandomClass<???> >::DoSomething(SomeRandomClass<???> & t)
{
//something specialized happens here
}
用适当的类型(双精度等)替换问号是可行的,但我希望它保持通用。我不知道该放什么,因为没有定义任何类型。我环顾四周,了解了模板模板参数,并尝试了各种组合,但没有成功。谢谢您的帮助!
可以像这样专门化课程
template <>
template <typename T,typename S>
class MyTemplateClass <SomeRandomClass<T,S> >
{
void DoSomething(SomeRandomClass<T,S>& t) { /* something */ }
};
不可能只特化成员方法,因为特化是针对整个类的,并且您必须定义一个新类。但是,您可以这样做
template <>
template <typename T,typename S>
class MyTemplateClass <SomeRandomClass<T,S> >
{
void DoSomething(SomeRandomClass<T,S>& t);
};
template <>
template <typename T,typename S>
void MyTemplateClass<SomeRandomClass<T,S> >::DoSomething(SomeRandomClass<T,S>& t)
{
// something
}
拆分声明和定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)