|
TObject의 파괴자인 TObject::~TObject() 함수와 콜링 컨벤션이 달라서 에러가 난 겁니다.
함수 인자가 없어서 TObject의 파괴자와 인자 리스트가 같은데다 virtual로 선언되었기 때문에 완전히 새로운
함수가 아니라 오버라이딩으로 인식하는 거죠. 그런데 오버라이딩을 하려고 봤더니 콜링 컨벤션이 달라서
안된다는 얘깁니다.
TObject의 파괴자는 다음과 같이 선언되어 있죠.
virtual __fastcall ~TObject();
보시다시피 __fastcall이 붙어있죠. 따라서 ~CComm 함수에도 똑같이 __fastcall을 붙여주셔야 합니다.
virtual __fastcall ~CComm();
이것은 파괴자라서가 아니라, 모든 함수에서 virtual로 선언하고 조상 클래스에 같은 이름과 같은 인자리스트의
함수가 있을 경우 동일합니다. 콜링 컨벤션, 리턴 타입 등을 맞춰주어야 하죠.
초보 님이 쓰신 글 :
: [C++ Error] Comm.h(114): E2113 Virtual function 'CComm::~CComm()' conflicts with base class 'TObject'
:
: 위와 같은 에러가 자꾸 발생하는데..이유를 모르겠네여,,
: class CComm : public TObject
: {
: .....
: public:
: CComm();
: virtual ~CComm();
: ....
: };
: 위와 같이 선언했는데..뭐가 잘못됐는지 모르겠네요..
:
:
|