제가 크롬을 쓰는 관계로 답글이 안올려져서 다른 컴퓨터로 이제사 또 답글을 올려서 미안스럽습니다.
답글 올리신 것에 대해 의문점이 들어서 글 적었습니다.
다음 코드에
:
: class TPanel : public Extctrls::TPanel
: {
: private:
: TNotifyEvent FOnPaint;
:
: protected:
: void __fastcall Paint(void)
: {
: inherited Paint();
: if(FOnPaint)
: {
: FOnPaint(this);
: }
: }
:
: public:
: __property Canvas; //protected인 프로퍼티를 public으로 변경
:
: __property TNotifyEvent OnPaint= {read=FOnPaint, write=FOnPaint}; //추가한 이벤트
: };
:
: #define TPanel ::TPanel
:
:
:
: 자 이제 위 클래스를 이용하여 다음과 같이 코딩하시면됩니다.
:
:
: void __fastcall TForm1::FormCreate(TObject *Sender)
: {
: Panel1->OnPaint=Panel1Paint;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Panel1Paint(TObject *Sender)
: {
: Panel1->Canvas->MoveTo(0,0);
: Panel1->Canvas->LineTo(100,100);
: }
: //---------------------------------------------------------------------------
:
:
질문드립니다.
1. c++문법에서 상속할 때 public으로 받은 경우에 부모클래스의 protected멤버를 자식 클래스가 임의로 public멤버로 재선언할 수가 있었나요? 제가 C++공부한 수련이 얕아 그런지 처음보는 구문이라서요. 빌더에서 컴파일에 아무 문제는 없던 것 같던데요. 제가 본 책은 2~4권 되는데(ex) C++기초플러스 4판) 그런 경우를 못보아서요. 참고문헌좀 소개해 주시면 감사하겠습니다.
2. 델파이에는 있지만 C++빌더에서는 필요없다고 하는 키워드 inherited가 보입니다. 예전에 임프님이 쓰셨던가(?) 그런 걸 본 적 있는 것 같습니다. 빌더4 바이블인가 하는 책에서도 읽은 기억이 나는데 당최 혼란스러워서요. 제 안목을 좀 높여주신다면 깊이 감사하겠습니다.
|