0

タイプと非タイプ (デフォルト) のテンプレート パラメータを持つクラスがあります。非型パラメータは組み合わせることができ、次の方法でインスタンス化できます。

TNT<int> v;
TNT<double, X, Y> v2;
TNT<float, X | X1, Y1> v3;
TNT<int, X | X1, Y | Y1, Z | Z1 | Z2, W> v4;

クラスTNTには型パラメーターがあり、残りはデフォルトです。cpp ファイルでそのようなクラスを明示的にインスタンス化する正しい方法は何ですか? 非型パラメータは組み合わせることができるので、多くの組み合わせが可能です。

4

2 に答える 2

1

通常の意味での明示的なインスタンス化について話している場合、ヘッダー ファイルではなく cpp ファイルでテンプレート クラスの実装を定義するときに、リンク エラーを回避することに関する質問だと思います。

その場合、通常の明示的なインスタンス化規則が適用され、次の構文が使用されます。

template class TNT<int>;
template class TNT<float, 1.0, 2.0>;
//etc

他の場所で使用される組み合わせで必要な数だけ、これらを記述する必要があります。

于 2016-06-28T14:49:52.520 に答える