책 정리/Modern C++ Design
5장, 일반화 함수자(함수 객체) - 6, 일반화 함수자 구현하기 - 멤버 함수 포함시키기
최익필
2010. 11. 28. 05:05
이 포스트의 목적
- 일반화 함수자(함수 객체)가 멤버 함수 포인터도 처리할 수 있게 만든다.
이 포스트의 준비물
- VMware player 3.1.2
- Debian 5 64bit
- g++ 4.3.2
- vim 7.1.314
- project.vim
- make
참조 서적
- 안드레 알렉산드레스쿠 저. Modern C++ Design. 이기형 역.
Addiston-Wesley. 인포북. 초판 2003.07.30. page(199 ~ 205)
우선 멤버 함수의 포인터를 받기 위한 방법부터 알아야 한다. 다음 예제에서 하이라이트 된 부분을 잘 보면 쉽게 이해할 수 있을 것이다.
어떻게 멤버 함수를 받아 들이는지 이해가 되었다면, 이제 function_object에 포함시켜 보자.
- 받아들일 멤버 함수와 멤버 함수를 갖은 객체를 받아 들이는 생성자를 추가해야 한다. 왜냐하면 멤버 함수는 객체가 있어야지만 호출 가능하기 때문이다. 그러므로 다음과 같은 코드를 만들수 있다.
- m_function_object_base 도 function_object_interface 를 상속하여 구현하고, 객체도 받을수 있도록 만든다. 그러면 다음과 같은 코드를 만들 수 있다.
- 이를 다 합친 코드는 다음과 같다.
여담
- 음.. 코드 만드는 것보다 설명하는게 더 어려울 때가 많다.