2009년 11월 13일 금요일

override keyword

 어제 VUTPP의 구글 테스트용 Bind코드가 구글 테스트 1.4버전과 호환되지 않아서, 고치면서 고생했던 것이 VUTPP용 Listener class를 만들 때,

 

 이전 버전에선 본래 void OnNewTestPartResult라는 이벤트를 발생시키는데, 1.4버전에선 그 event의 이름이 OnTestPartResult로 바뀌어서 교체를 하고 다른 수정부분들도 수정을 하고 당당히 컴파일을 성공해서 실험을 하는데 왠일인지,

 

 함수가 호출되지 않아서 bRun의 값이 false인 상태로 있어서 모든 테스트들이 다 can't find test에러를 발생시키는 것 아닌가?

 

 좌절하고 있었는데, 가상 함수를 다시 잘 살펴보니 이전 버전은 인자가 포인터였는데 이제는 레퍼런스로 바뀐 것 아닌가? 결국 함수가 오버라이드되지 않고 새로운 함수를 정의한 것이 되었으니 이벤트 함수가 호출되지 않았던 것이다.

 

 나는 오버라이드하고 싶었는데 그 의도를 컴파일러한테 알려줄 수가 없으니 컴파일러가 오류를 알려주지 못하는 것이라서, 컴파일러한테 의도만 전달할 수 있으면 쉽게 발견할 수 있는 오류였던 것이다. 그런데 그런 역활을 해주는 keyword가 visualstudio 2005에서 추가되었는데 그것이 바로 override 키워드다.

 

 이것만 알았어도, 고생 덜했을텐데......

 

 

댓글 없음:

댓글 쓰기