推 Magic0325:非常感謝!!你的連結 就是我要的寫法~!! 09/14 20:11
※ 引述《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)