看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Magic0325 (滾阿滾阿~)》之銘言: : 遇到的問題: (題意請描述清楚) : 如何可以簡化下列的code ? : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : Borland C++ Builder : 有問題的code: (請善用置底文標色功能) : //Aaa、Bbb、Ccc 均為全域變數 : //A1、B1、C1 為三種不同的class 但是都繼承於某個同個class 假設為Object好了 : //xxx、yyy 分別表示同個相同屬性 : Aaa = new A1(); : Aaa->xxx = true; : Aaa->yyy = 2; : Bbb = new B1(); : Bbb->xxx = true; : Bbb->yyy = 2; : Ccc = new C1(); : Ccc->xxx = true; : Ccc->yyy = 2; 很明顯 Aaa、Bbb、Ccc都是指標型態, 雖然他們指到的物件類別有 共同的父類, 但還是沒辦法用Object*&當作參數來傳遞, 因為指標 之間並沒有繼承關係. 再來就是A1、B1、C1這邊要參數化, 使用函式模版就能達到這點, 以下是我用來測試的程式碼 : http://paste.plurk.com/show/304998/ 本來是用預設模板引數來做, 不過VC2010就編不過了, 只好採取這 個方案. 基本上這個方法是治標不治本, 因為既然這些屬性是在父類別中被 定義, 那麼初始化的動作很自然應該交由父類別來進行, 最好的方 法還是要改善你的類別設計 : class Object { private: bool xxx_; private: int yyy_; public: Object( bool xxx, int yyy ) : xxx_( xxx ), yyy_( yyy ) { } }; struct A1 : public Object { public: A1( bool xxx, int yyy ) : Object( xxx, yyy ) { } }; A1 *Aaa = new A1( true, 2 ); : 請問這該如何寫成一個function 丟入變數 : 去批次處理這三段看似很相似的code呢? : 方便的話給我一個關鍵字即可 我一時毫無頭緒 想到Funciotn Pointer 但有點卡... : 請各位大大指教 <(_ _)> -- ╭───╮ ╭╮ ╭╮ 非常非常善良的你 ╭──╯ 非常我的你 ──╮╭──╮│──╯╭─╮╭──── ────────── ──╮│╭╮│╰─╮╭─╯│╭╭╮ 曾一瞬間展露笑容的你 ╭──╯╰╯│ │ ─╯╰╯││││ 曾接受我心意的你 ───╯╰──╯ ╯╰─╯╰╰╯ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.197.115 ※ 編輯: loveme00835 來自: 140.121.197.115 (09/14 01:04)
Magic0325:非常感謝!!你的連結 就是我要的寫法~!! 09/14 20:11