テンプレート エイリアスを使用した行列のようなベクトルの Typedef の作成
次のクラス テンプレートを考えてみましょう:
template<size_t N, size_t M> class Matrix { // .... };
目標は、サイズ N と 1 の行列。最初は typedef:
typedef Matrix<N,1> Vector<N>;
を使用して試行されましたが、コンパイル エラーが発生しました。類似しているが同一ではない解決策は、クラス継承を使用して達成されました。
template <size_t N> class Vector: public Matrix<N,1> { };
より適切な解決策を見つけるために、C 11 で導入されたエイリアス宣言に目を向けます。
template <size_t N> using Vector = Matrix<N, 1>;
これにより、次のことが可能になります。型エイリアス Vector
C 03 では、ネストされた typedef を持つ構造体を使用して同様の近似を実現できます。
template <size_t N> struct Vector { typedef Matrix<N, 1> type; };
ここでは、型 Vector
N>::type は、行列以上がC で行列テンプレートからベクトル型エイリアスを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。