template을 typedef 하려면?


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

이런 코드가 있을 때

함수에서 default parameter를 정하면 호출할 때 따로 안 적어도 되는 것처럼 typedef Matrix<N,1> Vector<N>; 이런 식으로 쓰고 싶어요. 근데 컴파일이 안돼요...

밑의 코드를 쓰면 컴파일은 되는데 제가 원하는 거랑은 쫌 달라요.

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

도와주세요ㅜㅜ

  • 2016년 01월 15일에 작성됨

조회수 238


1 답변


좋아요
1
싫어요
채택취소하기

C++11은 alias declarations을 지원합니다. typedef가 좀더 일반화(generalization) 돼서 이젠 템플릿에서도 밑의 코드같이 쓸 수 있어요!

template <size_t N>
using Vector = Matrix<N, 1>;
The type Vector<3> is equivalent to Matrix<3, 1>.

C++03에서 제일 비슷한건

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

같이 쓰는 거네요. Vector<3>::type의 type이 Matrix<3, 1>과 같아집니다.

  • 2016년 01월 15일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close