線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1218
推到 Plurk!
推到 Facebook!

inherited 一問

尚未結案
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-02-24 10:59:16 IP:211.22.xxx.xxx 未訂閱
我有一個類別TMPHMemoryStream 繼承TMemoryStream TMPHMemoryStream = class(TMemoryStream) 我想要Override GetSize 這個method 我查了一下這個method,是在祖父類別TStream所定義的
function TMPHMemoryStream.GetSize: Int64;
var
nFileSize: int64;
begin
  if FDataStyle = False then
    inherited GetSize;       
    // 如果這樣想,我不知道要如何得到祖父類別的回傳值
    Result := self.GetSize   
    // 所以我就嘗試這樣寫,不知道可不可以呼叫到祖父
end;
所以我想要問 問題一: Result := inherited GetSize; 要怎麼寫? 還有,假設曾祖父類別有一個GetSize,然後父類別也有一個GetSize 我該如何指定去繼承我要的函式,是不是 Result := inherited TStream.GetSize; // 曾祖父類別 Result := inherited TMemoryStream.GetSize; // 父類別 問題二: 我是否可以Asign "Size",這一個祖父類別的Class Member var MyMemoryStream: TMPHMemoryStream; MyMemoryStream.Size = 1000;
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-02-24 11:14:34 IP:61.217.xxx.xxx 未訂閱
你所說的 不妨試一試 有問題再提出        問題..希望不是最後才發生!建議一次問完!
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-02-24 11:35:35 IP:211.22.xxx.xxx 未訂閱
第一,目前我的Delphi 不斷地當機,只因為我把 function TMPHMemoryStream.GetSize: LongInt; 改成 function TMPHMemoryStream.GetSize: Int64; 之後,一直出現 Stack Overflow,只要Compiler就會當機 第二,Delphi Help對於Inherited 寫的太少了,翻了幾本書也沒有找到 所以才想上來問看看!
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-02-24 11:38:51 IP:61.219.xxx.xxx 未訂閱
Result:=inherited GetSize;
flyup
資深會員


發表:280
回覆:508
積分:385
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-02-24 12:01:13 IP:61.217.xxx.xxx 未訂閱
//宣告 function GetSize: Int64; overload;    property SIZE: Int64 read GetSize;        function TMPHMemoryStream.GetSize: Int64;varnFileSize: int64; var i:longint; begin  if FDataStyle = False then  i:=GetSize; //祖父類別的回傳值  Result := self.GetSize  end;    問題..希望不是最後才發生!建議一次問完!
BGman
初階會員


發表:28
回覆:85
積分:42
註冊:2003-01-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-03 09:19:05 IP:211.22.xxx.xxx 未訂閱
經過我的測試,再加上寫信問了資策會的講師 發現Delphi 與 C OOP的機制,有些不同 關鍵字 inherited 只能宣告繼承親代 至於直接指定繼承哪一個親代,只有C 才可以 Delphi是有其限制的。 講師建議我慎選所要繼承的親代,就不需要有繼承祖父類別的需求 在此感謝各位高手的協助
系統時間:2024-05-03 19:12:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!