私はそれが有効なC++のコードであるので、以下のコードの意味だろうかを理解しようとしています:C++テンプレートの理解
template<class A>
class AT
{
AT();
};
template<class B>
AT<B>::AT()
{}
誰かが私には、テンプレートのインスタンス化の効果が何であるかを理解するのに役立ちますコンストラクタ?また、実用的なユースケースがあれば、大変感謝しています。
タンク
私はそれが有効なC++のコードであるので、以下のコードの意味だろうかを理解しようとしています:C++テンプレートの理解
template<class A>
class AT
{
AT();
};
template<class B>
AT<B>::AT()
{}
誰かが私には、テンプレートのインスタンス化の効果が何であるかを理解するのに役立ちますコンストラクタ?また、実用的なユースケースがあれば、大変感謝しています。
タンク
ここにテンプレートインスタンシエーションはありません。このコードの後半では、単にAT
クラスのコンストラクタを定義しています。これを行うとき、それは一般的テンプレートのパラメータに同じ名前を使用することに注意してください:
template<class A>
class AT
{
AT();
};
template<class A>
AT<A>::AT()
{}
この構文のための使用は依存関係ループを切断するために、次のようになります。
template<class A>
class AT
{
AT();
};
class Dependent
{
AT<Dependant> member; // Complete definition of AT is needed here
};
template<class A>
AT<A>::AT()
{
Dependent object; // Complete definition of Dependent is needed here
}
テンプレートパラメータの名前重要ではありません。 2番目の部分を
template<class A>
AT<A>::AT()
{ }
と書くと、魔法は消えてしまい、単なるコンストラクタの定義になります。
ただし、テンプレートはどういう意味ですか? –
mathk
テンプレートの宣言または定義が後に続くのは...? –