关于常量定义的问题 |
尚未結案
|
mchakuna
一般會員 ![]() ![]() 發表:41 回覆:45 積分:17 註冊:2004-01-07 發送簡訊給我 |
我最近写了一个基类和几个子类, 我想在基类中定义两个(整型的)常数, 而且对子类可见. 例如
// file1.pas const first :Integer = 0; // OK second :Integer = 0; // OK type TBase = class(TObject) // const first :Integer = 0; // error // const second :Integer = 0; // error End; // file2.pas TOS1 = class(TBase) end; // file3.pas TOS2 = class(TBase) end;上述定义中, const这样写是不对的, 我只是示意而矣. 我把const写在type以前, 编译通过, 但这样就const所定义的常量不能延展到子类中去. 我又试用property来生成一个常量的属性 如 type TBase = class(TObject) private v :Integer; publshed property first :Integer read v default 0; property second :Integer read v default 1; End;但这里default根本不起作用。我最后找到下述方式(比较烦) type TBase = class(TObject) private v1, v2 :Integer; publshed property first :Integer read v1 default 0; property second :Integer read v2 default 1; public constructor Create; // 在这里初始化 v1:=0; v2:=1; End;但我实在想不明白难道在Delphi中, 想在类中定义一个整型常量就这么麻烦?有没有简单直接的方法? 请各位指教。 |
wameng
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1336 積分:1188 註冊:2004-09-16 發送簡訊給我 |
您寫的應該只是定義物件吧! 定義常數變數應為
type TBase = Record first :Integer; Second :Integer; End; 使用時應為 var ABase : TBase =( first : 0; Second : 1); {定義初始值}若使用物件定義初始值,確實要在 Create事件定義初始值。 別無他法。 除非在 implementation 之後,定義私有變數。 var V1 :Integer = 0; V2 :Integer = 1; 發表人 - wameng 於 2004/11/29 17:44:21 |
LargeWon
一般會員 ![]() ![]() 發表:3 回覆:10 積分:2 註冊:2002-12-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |