template을 typedef 하려면?

조회수 6161회
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>
{ };

도와주세요ㅜㅜ

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>과 같아집니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)