請問類別、建構子、繼承問題 |
答題得分者是:aftcast
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
我是用最基本的class來測試...T1為祖類別...T2為父類別..T3為子類別...ㄧ直繼承下來
但我這樣寫編譯時會錯. [C Error] Unit1.cpp(29): E2247 '_fastcall T1::T1()' is not accessible 好像是加了建構子的問題..但我不知道為什麼錯. 請前輩們指點.. .h檔 .cpp檔 <textarea rows="20">class T1 : public TObject { private: __fastcall T1(); __fastcall ~T1(); public: }; class T2 : public T1 { private: __fastcall T2(); __fastcall ~T2(); public: }; class T3 : public T2 { private: __fastcall T3(); __fastcall ~T3(); public: }; </textarea><textarea rows="20">__fastcall T1::T1():TObject() { // } //---------------- __fastcall T1::~T1() { // } //---------------- __fastcall T2::T2():T1() { // } //---------------- __fastcall T2::~T2() { // } //----------------- __fastcall T3::T3():T2() { // } //------------------ __fastcall T3::~T3() { // } //------------------</textarea> 編輯記錄
pireer 重新編輯於 2007-09-06 09:21:37, 註解 無‧
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
|
pireer
初階會員 發表:73 回覆:80 積分:30 註冊:2004-12-14 發送簡訊給我 |
我剛測試後..的確建構子與解構子放到public後就可以編譯..
但我還有個問題..如果T2與T3繼承的類別是TObject... 且T2與T3建構子函是後面改為呼叫TObject... 這樣建構子在private下也是可以編譯... 請前輩指點差異.. ===================引 用 Stallion 文 章=================== C++書裡面有提到,一個類別的 constructor, desturcotor 一定是 public 屬性!所以當然編譯不過~ |
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
不懂你在說啥?寫出來看看~
===================引 用 pireer 文 章=================== 我剛測試後..的確建構子與解構子放到public後就可以編譯.. 但我還有個問題..如果T2與T3繼承的類別是TObject... 且T2與T3建構子函是後面改為呼叫TObject... 這樣建構子在private下也是可以編譯... 請前輩指點差異.. ===================引 用 Stallion 文 章=================== C++書裡面有提到,一個類別的 constructor, desturcotor 一定是 public 屬性!所以當然編譯不過~ |
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
>> C++書裡面有提到,一個類別的 constructor, desturcotor 一定是 public 屬性!所以當然編譯不過~
補一下完整的正確觀念! 一般的情形下建構子與解構子是public的,這樣才可以在calss外面被create。但是,事實上二者都是可以被宣告成private的。其中,當建構子被放在private時,就是有名的singletons pattern。是為了確保instance只能有一個的做法! 用個實例給你看,但因為個人時間少沒能自己幫你寫個例子。就拿別人寫的例子給你看,是發表在code project網站上的程式。 <textarea class="cpp" rows="10" cols="60" name="code">/* Creational Pattern: SINGLETON Author: Rajesh V.S Language: C Email: rajeshvs@msn.com */ #include 回到主題,你的問題應該是你試著在class外面去create一個instance造成的!
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan
編輯記錄
aftcast 重新編輯於 2007-09-06 17:48:50, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |