Re: [問題] 重構

看板C_and_CPP作者 (累人啊....)時間14年前 (2012/02/14 23:46), 編輯推噓0(0014)
留言14則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《tyc5116 (累人啊....)》之銘言: : → tyc5116:請問還有其它方法嗎,因為1.我也不熟練2.交接應該也沒人懂 02/14 16:37 : → jhchou:用一樓的方法,把TFrm1,2共同的部分移到中間層 02/14 18:12 : → jhchou:自己再把繼承Tform改成繼承中間那一層應該可以吧 02/14 18:13 : → tyc5116:意思是建一個class Common,然後Tfrm 各自宣告 02/14 18:34 : → tyc5116:Common XXX,然後func放在Common內嗎? 02/14 18:35 : → jhchou:隨便寫寫,大概是這種感覺 http://ideone.com/h1KHn 02/14 20:08 謝謝你的範例,但這就是我的問題所在了,以VC windows form為例 開個新專案,所以就有了一個主視窗Form1 public ref class Form1 : public System::Windows::Forms::Form{} private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { ...(冗長的code) } 這樣子,Form1就相當於例子內的Tfrm1, System::Windows::Forms::Form則是TForm, 那MyFormTemplate要插入在哪裡?以BCB實作也有相同問題 我現在想到的方式則是 class XXX{ public: void func(); } class Form1{ ... XXX FunObj; } 以組合的方式,但似乎不是個好方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.139.190

02/15 00:20, , 1F
雖然IDE自動幫你繼承Form,但是你可以自己改掉啊
02/15 00:20, 1F

02/15 00:25, , 2F
但我自己建的class不能繼承它啊
02/15 00:25, 2F

02/15 00:25, , 3F
至於MyFormTemplate就跟增加一個新class一樣
02/15 00:25, 3F

02/15 00:29, , 4F
沒理由不能繼承 檢查一下compile的錯誤訊息看是什麼問題
02/15 00:29, 4F

02/15 00:38, , 5F
http://ideone.com/snzLH 類似這樣吧
02/15 00:38, 5F

02/15 00:38, , 6F
可能是VC 的winform本身的限制,明天到公司再用BCB試試^^
02/15 00:38, 6F

02/15 08:41, , 7F
BCB的話,class MyFormTemplate : public TForm OK
02/15 08:41, 7F

02/15 08:41, , 8F
TFrm1 : public MyFormTemplate 有錯
02/15 08:41, 8F

02/15 08:44, , 9F
原因出在ctor,要對原本的作一些修改,但覺得變得太麻煩了
02/15 08:44, 9F

02/15 08:55, , 10F
修改了一下還是可以,但就是變麻煩了
02/15 08:55, 10F
※ 編輯: tyc5116 來自: 111.251.184.47 (02/15 08:57)

02/15 10:41, , 11F
我看了VC的錯誤訊息 你用C++/CLI,不能讓unmanaged class
02/15 10:41, 11F

02/15 10:42, , 12F
繼承managed class。把abcd宣告成 public ref class abcd
02/15 10:42, 12F

02/15 10:44, , 13F
應該就可以了 另外BCB我沒用過,沒辦法幫上忙
02/15 10:44, 13F

02/15 14:35, , 14F
恩..謝謝
02/15 14:35, 14F
文章代碼(AID): #1FEe7B0d (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
1
11
完整討論串 (本文為第 2 之 2 篇):
問題
0
14
問題
1
11
文章代碼(AID): #1FEe7B0d (C_and_CPP)