|
안녕하세요
TCustomMemo의 KeyPress는 DYNAMIC으로 선언되어있습니다..
잠깐 DYNAMIC에 대해 Developer's Guide와 돔말에 나온 설명을 대해서 적겠습니다..
DYNAMIC macro는 __declspec(dynamic) 나타내는 것이구요 이것은 virtual과 같은 의미입니다.
DYNAMIC macro는 차일드에서 선언될때 virtual로 선언될수 없구요, 그반대경우도 마찬가지입니다.
글구 DYNAMIC macro는 차일드에서 선언될때 생략할수 없답니다..
그러니까 아래 문제는
선언시에 Keypress 앞부분에 이함수는 DYNAMIC function이다 라고 써주시면 되겠군여
...
protected:
DYNAMIC void __fastcall KeyPress(char &Key);
...
글구 돔말에는 virtual이나 DYNAMIC이나 같은 의미이지만 실행시 차이점을 갖는다라고 합니다.
virtual은 속도에 최적화 되고, DYNAMIC은 코드크기에 최적화 된다고 합니다..
그럼 즐프하세요
양정석 님이 쓰신 글 :
: 볼랜드 C++빌더 정복 4.0 정태영저 가남사의 제25장 컴포넌트 만들기를 보고
: 컴포넌트 만들기를 하고 있습니다.
:
:
: KeyPress이벤트를 오버로딩하는데 에러메시지가 자꾸 뜹니다. 책에서 하라는 대로
: protected:에 잘 코딩했는데 컴파일 하면 오류가 납니다.
: 상위 클래스에 virtual로 선언되어있는데 충돌이 난다는 데 뭔지 모르것어요.
: 어떻게 고쳐야 하지요? 책이 잘못 된건가요?
: 부탁드립니다.
:
: 아래 소스코드및 에러메시지.
:
: class PACKAGE TCustomTt : public TCustomMemo
: {
: private:
: double FieldValue;
: void __fastcall SetFieldValue(double A);
: void __fastcall FormatNum();
: protected:
: void __fastcall KeyPress(char &Key);
:
: ...
: ..
: .
:
:
: 에러 메시지:
: [C++ Error] CustomTt.h(19): E2113 Virtual function '_fastcall TCustomTt::KeyPress(char &)' conflicts with base class 'TCustomMemo'
:
:
:
:
:
:
:
|