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?
};
};
ダブルテンプレートの場合:
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) { }