어제 VUTPP의 구글 테스트용 Bind코드가 구글 테스트 1.4버전과 호환되지 않아서, 고치면서 고생했던 것이 VUTPP용 Listener class를 만들 때,
이전 버전에선 본래 void OnNewTestPartResult라는 이벤트를 발생시키는데, 1.4버전에선 그 event의 이름이 OnTestPartResult로 바뀌어서 교체를 하고 다른 수정부분들도 수정을 하고 당당히 컴파일을 성공해서 실험을 하는데 왠일인지,
함수가 호출되지 않아서 bRun의 값이 false인 상태로 있어서 모든 테스트들이 다 can't find test에러를 발생시키는 것 아닌가?
좌절하고 있었는데, 가상 함수를 다시 잘 살펴보니 이전 버전은 인자가 포인터였는데 이제는 레퍼런스로 바뀐 것 아닌가? 결국 함수가 오버라이드되지 않고 새로운 함수를 정의한 것이 되었으니 이벤트 함수가 호출되지 않았던 것이다.
나는 오버라이드하고 싶었는데 그 의도를 컴파일러한테 알려줄 수가 없으니 컴파일러가 오류를 알려주지 못하는 것이라서, 컴파일러한테 의도만 전달할 수 있으면 쉽게 발견할 수 있는 오류였던 것이다. 그런데 그런 역활을 해주는 keyword가 visualstudio 2005에서 추가되었는데 그것이 바로 override 키워드다.
이것만 알았어도, 고생 덜했을텐데......
댓글 없음:
댓글 쓰기