掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
用途によって元クラスの変更をするには? (ID:33039)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
それだとFAとFBの使いどころが…… 状況としてはこういうことをやりたいんですかね? type A = class(TOleControl) property x: Integer; // その他のAの実装 end; B = class(TOleControl) property x: Integer; // その他のBの実装 end; ... var C: TOleControl; ... if xxx then C := TESTA else C := TESTB; ShowMessage(IntToString(C.x)); // NG もちろんこれは無理です。(TOleControlはxを持っていないし、 A.xとB.xはたまたま名前が同じだけで無関係なプロパティですから。) A, Bとも自作のクラスなら共通の親クラスを作ってやればいいのでは。 type TABParent = class(TOleControl) property x: Integer; // その他のA,B共通の実装 end; A = class(TABParent) // A固有の実装 end; B = class(TABParent) // B固有の実装 end; ... var P: TABParent; ... if xxx then P := TESTA else P := TESTB; ShowMessage(IntToString(P.x)); // OK xは完全に共通ではなくてAとBで異なる動作をさせたいということなら、 仮想化してそれぞれのクラスでオーバーライドしてやればいいですね。 A,B,xが具体的に何なのかわかりませんが、仮に自作でないとしても クラス構造をさかのぼっていったら共通の親クラスがいないでしょうか?
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.