作者tyc5116 (累人啊....)
看板C_and_CPP
標題Re: [問題] 重構
時間Tue Feb 14 23:46:17 2012
※ 引述《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
→ jhchou:雖然IDE自動幫你繼承Form,但是你可以自己改掉啊 02/15 00:20
→ tyc5116:但我自己建的class不能繼承它啊 02/15 00:25
→ jhchou:至於MyFormTemplate就跟增加一個新class一樣 02/15 00:25
→ jhchou:沒理由不能繼承 檢查一下compile的錯誤訊息看是什麼問題 02/15 00:29
→ tyc5116:可能是VC 的winform本身的限制,明天到公司再用BCB試試^^ 02/15 00:38
→ tyc5116:BCB的話,class MyFormTemplate : public TForm OK 02/15 08:41
→ tyc5116:TFrm1 : public MyFormTemplate 有錯 02/15 08:41
→ tyc5116:原因出在ctor,要對原本的作一些修改,但覺得變得太麻煩了 02/15 08:44
→ tyc5116:修改了一下還是可以,但就是變麻煩了 02/15 08:55
※ 編輯: tyc5116 來自: 111.251.184.47 (02/15 08:57)
→ jhchou:我看了VC的錯誤訊息 你用C++/CLI,不能讓unmanaged class 02/15 10:41
→ jhchou:繼承managed class。把abcd宣告成 public ref class abcd 02/15 10:42
→ jhchou:應該就可以了 另外BCB我沒用過,沒辦法幫上忙 02/15 10:44
→ tyc5116:恩..謝謝 02/15 14:35