Q&A

  • 쓰레드에서의 생성자 오버라이드 지원과 Form1의 생성자/소멸자...
쓰레드에서 생성자 오버로드설정시 에러가 나네요!
안되는 건가요 ? 답변 부탁드립니다... 꾸벅 -__-; (그리고 폼(Form1)에서 생성자 소멸자 따로 만들수 잇나여?

type
  TThread1 = class(TThread)
  private
    procedure SetName;
  protected
        procedure Execute; override;
  public
    ClientConnected : Boolean;
    nData : Integer;

    constructor Create(AOwner: TComponent); override;    // 쓰레드에서는 override
    destructor Destroy; override;

end;

// 에러메시지....
[Error] Unit1_Thread_Socket.pas(27): Cannot override a static method
[Fatal Error] XCLIENT.dpr(8): Could not compile used unit 'pas\Unit1_Thread_Socket.pas'
2  COMMENTS
  • Profile
    최용일 2005.04.23 05:47
    안녕하세요. 최용일입니다.

    TThread는 TObject에서 상속받았고, TObject.Create는 virtual method가 아닙니다. 당연히 override할려면 에러가나죠...

    상속받은 Create는 Static method이니까 override를 빼세요...

    폼(Form1)에서 생성자 소멸자를 따로 만들 수 있습니다.

    TForm은 Create/Destory 둘다 virtual method이니까 override하셔야 맞습니다. 파라매터를 바꾸실려면 재정의 하셔야 하구요...

    <!--CodeS-->
    그냥 상속
    TForm1 = class(...)
         constructor Create(AOwner: TComponent); override;
         destructor Destroy; override;
       .....
    end;

    재정의

    TForm1 = class(...)
        constructor Create(const ID, Password: string); reintroduce; virtual;
        destructor Destroy(ReturnValue: Integer); reintroduce; virtual;
    end;
    <!--CodeE-->
    ^^ 항상 즐코하세요...

  • Profile
    최민호 2005.04.27 04:33
    ㅇㅇㅇ