1. ホーム
  2. c++

[解決済み】C++テンプレートのtypedef

2022-03-24 15:03:56

質問

クラスがあります

template<size_t N, size_t M>
class Matrix {
    // ....
};

を作りたいのですが。 typedef を作成し Vector (列ベクトル)と等価である。 Matrix のようなもので、サイズはNと1。

typedef Matrix<N,1> Vector<N>;

これはコンパイルエラーになります。以下は似たようなものを作りますが、私が欲しいものとはちょっと違います。

template <size_t N>
class Vector: public Matrix<N,1>
{ };

解決策やあまり高くない回避策/ベストプラクティスはないのでしょうか?

どのように解決するのですか?

C++11を追加しました。 エイリアス宣言 を一般化したものです。 typedef テンプレートを使用することができます。

template <size_t N>
using Vector = Matrix<N, 1>;

タイプ Vector<3> と同等です。 Matrix<3, 1> .


C++03では、最も近い近似値でした。

template <size_t N>
struct Vector
{
    typedef Matrix<N, 1> type;
};

ここでは、タイプ Vector<3>::type と同等です。 Matrix<3, 1> .