假設我有一個較低的水平如何將信息附加到類層次結構?
class A {...};
class A0 : public A {...};
class A1 : public A {...};
class A2 : public A {...};
類層次結構,我要代表它像圖標的GUI級別較高的水平,這可能很容易在這些類中添加一個虛擬方法
virtual Icon A::icon() {return iconOfA;}
virtual Icon A0::icon() {return iconOfA0;}
virtual Icon A1::icon() {return iconOfA1;}
virtual Icon A2::icon() {return iconOfA2;}
但是,我不想改變低級別的類,任何簡單的方法來實現它?我希望能動態地使用它,就像
A* a = new A2();
getIcon(a); // will return iconOfA2.
謝謝。
在基類A中聲明'icon'作爲虛函數。並且geticon獲取基類指針或引用,並調用該基類變量上的圖標。 –
這就是我不想要的問題,如我的問題所示。 – user1899020
這需要重寫派生類中的圖標()OP要避免的操作 – 4pie0