[c++] C ++ 템플릿 typedef

수업이 있습니다

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

크기 N과 1에 해당 typedef하는 Vector(열 벡터) 를 만드는 a 를 만들고 Matrix싶습니다.

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>.


답변