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 답변
-
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>
과 같아집니다.
댓글 입력