看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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:http://ideone.com/snzLH 類似這樣吧 02/15 00:38
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