如何将信息附加到类层次结构?

use*_*020 3 c++

假设我有一个较低级别的类层次结构

class A {...};
class A0 : public A {...};
class A1 : public A {...};
class A2 : public A {...};
Run Code Online (Sandbox Code Playgroud)

我想用更高级别来表示它,比如带有图标的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;}
Run Code Online (Sandbox Code Playgroud)

但是,我不想改变低级别类,任何简单的方法来实现它?我希望动态地使用它,比如

A* a = new A2();
getIcon(a); // will return iconOfA2.
Run Code Online (Sandbox Code Playgroud)

谢谢.

Dan*_*dor 5

在GUI级别创建一个映射,该映射将具有键的类和值的图标.Icon属于GUI,它可能与类本身无关.

  • +1 - 关注点分离是一个非常重要且经常被忽视的概念 (2认同)