1

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?
    };
};
4

2 に答える 2

2

ダブルテンプレートの場合:

template<typename T>
template<typename Q>
void A<T>::B<Q>::func(const A<T>& a)
{
}
于 2012-06-19T18:07:00.550 に答える
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) { }
于 2012-06-19T18:07:27.040 に答える