如何在类声明之外定义嵌套模板化类的方法?

How do you define a nested templated class' method outside of the class declaration?

本文关键字:方法 嵌套 定义 声明      更新时间:2023-10-16

如何在类声明之外定义funcclass 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?
    };
};

使用双模板:

template<typename T>
template<typename Q>
void A<T>::B<Q>::func(const A<T>& a)
{
}

这相当简单:

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) { }