typelist가 .. 확실히 당근 농장의 트렉터같은 존재라 할일지라도 트렉터를 몰기 어렵다면, 누구도 트렉터를 사용하지 않을 것이다. 그렇기 때문에 사용법을 확실히 고쳐놔야 하는데 책에선 #define 매크로를 이용하여 개선시켰고, boost::tuple의 경우 메타 프로그래밍으로 개선시켰다.
나 같은 경우 boost::tuple이 더 마음에 들지만 실질적으로 책에서 설명하는 typelist는 더 확장된 개념이기도 하고, 9장에서 추상 팩토리도 해야 하니, 책의 방법을 고수하겠다.
우선 문제점으로 꼽혔던 사용 방법 중, 선언 방법을 고쳐 보기 위해서 생각을 해보자.
음!! OK! 책에서 #define 매크로를 이용하여 typelist의 선언 방법을 개선 시켰는데, 그 방법이 바로 "재귀 호출"이다. 사실 나는 "재귀" 개념이 제일 싫다. 그렇다고 당근 싫다고 안먹으면, 병에 걸리고, 병에 걸리면, 일을 못하게 되고, 일 못하게 되면 결혼 못하고 결혼 못하면 결국 혼자 당근 밭에 가서 당근 뽑아야 한다! 생각만 해도 희망이 없어 보인다. 그러므로 "재귀"개념을 반드시 익숙해져야 하는데, 이번 장도 정리할겸 익숙해져보자.
재귀의 기초는 가장 기초적인것을 표현하는 데에서부터 시작된다. 하나의 템플릿 파라미터를 갖는 typelist의 경우 typelist<T1, NullType>가 가장 기초인데, 이것을 #define 매크로로 걸어두면 다음과 같을 것이다.
만약 두개의 템플릿 파라미터를 갖는다면 다음과 같을 것이다. typelist<T1, typelist<T2, NullType> > 그런데 두번째 템플릿 파라미터는 .. 처음에 정의했던 매크로로 대체할 수 있다는 생각이 든다. 그러므로 다음과 같을 것이다. 곰곰히 생각해보면 이런 식으로 계속 나갈 수 있을것 같다.
이것으로 선언방법이 깔끔해졌다! 또 내가 한줄씩 추가한 만큼 확장성도 더욱 추가할 수도 있으니 꽤 괜찮다. 다음 포스팅에서는 접근성에 대한 이야기로 하고 이만 접는다.
'책 정리 > Modern C++ Design' 카테고리의 다른 글
Part 3, 테크닉 3-8 typelist에 자료형 또는 typelist 추가하기 (0) | 2009.09.01 |
---|---|
Part 3, 테크닉 3-7 Typelist에 대한 탐색 (0) | 2009.09.01 |
Part 3, 테크닉 3-6 Index에 대한 접근 (0) | 2009.08.31 |
Part 3, 테크닉 3-5 중간 첨언, 왜 재귀밖에 사용하지 못할까? (0) | 2009.08.31 |
Part 3, 테크닉 3-4 Typelist의 길이 계산 방법 (710) | 2009.08.28 |
Part 3, 테크닉 3-2 Typelist의 정의 (0) | 2009.08.20 |
Part 3, 테크닉 3-1 Typelist의 필요성 (0) | 2009.08.20 |
Part 2, 테크닉 : 2-10 Traits 자료형 (0) | 2009.07.30 |
Part 2, 테크닉 : 2-9 NullType과 EmptyType (710) | 2009.07.28 |
Part 2, 테크닉 : 2-8 type_info에 대한 포장 클래스 만들기 (0) | 2009.07.24 |
최근댓글