お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"RE:クラス参照型変数をリストで持つ"

この発言は
#00532 アイクビー さんの複数の派生クラスを配列で扱う
に対するコメントです

この発言に対し以下のコメントが寄せられています
#00534 謎の全知師 さん RE^2:クラス参照型変数をリストで持つ

アイクビー さん、こんにちは。こういうのがVCL風かなと(^^; type TMyThread = class(TThread) public constructor Create(....); virtual; // ←注目 end; TThread1 = class(TMyThread) public constructor Create(....); override; // ここで実装する procedure Execute; override; end; TThread2 = class(TMyThread) ... TMyThreadClass = class of TMyThread; // クラス参照型の宣言 var ThClassList: TList; ThList: TList; // 基底型のコンストラクタ constructor TMyThread.Create(YN: boolean); begin inherited Create(YN); // TThreadのコンストラクタを働かす ...... // 共通にやることがあればここで書いておく end; // 派生型のコンストラクタ constructor TThread1.Create(YN: boolean); begin inherited Create(YN); // 共通部分の実行 ...... end; // スレッドの登録の例 procedure RegisterThread( ThClass: TThreadClass ); var i: Integer; begin ThClassList.Add( ThClass ); // 自分で作った基底クラスの「クラス参照」にキャスト ThList.Add( TMyThreadClass(ThClassList.Last).Carete( True ) ); end; initialization ThClassList := TList.Create; ThList := TList.Create; finalization ThClassList.Free; ThList.Free; end. > この場合のようにTThread.Createをいぢってない場合うまくいくのですが、派 >生クラスのCreateの引数の数や型が合わないとコンパイルできませんでした。引 >数が同じならうまくいくかどうかは試していないのでわかりません。  上記のようにvirtualにして,引数並びを同じにしてoverrideすればOK. TN(CQJ01721) Original document by TN 氏 ID:(CQJ01721)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum