수업이 있습니다
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>
.