如何在func
下面的类声明之外定义class A{...};
?
template<typename T>
class A
{
template<typename Q>
class B
{
static void func(const A<T>& a){} // How do I define this function outside of the class declaration?
};
};
答案 0 :(得分:2)
使用双模板:
template<typename T>
template<typename Q>
void A<T>::B<Q>::func(const A<T>& a)
{
}
答案 1 :(得分:2)
这是相当直截了当的:
template<typename T>
template<typename Q>
void A<T>::B<Q>::func(const A<T>& a) { }
基本上,它与在类模板声明之外定义模板化类方法的技术相同。例如:
template<typename T>
class test
{
template<typename U>
void func(const U& u);
};
您可以在课堂外定义func
,如下所示:
template<typename T>
template<typename U>
void test<T>::func(const U& u) { }