C++ 变形类代码的分离可视化设计

C++ 变形类代码的分离可视化设计,c++,design-patterns,C++,Design Patterns,我有一些主要是数据模型的类层次结构。例如: class A; ///< abstract base class class B: public A; class C: public A; class D: public A{ QList<QSharedPointer<A>> m_a; } A类;//

我有一些主要是数据模型的类层次结构。例如:

class A; ///< abstract base class
class B: public A;
class C: public A;
class D: public A{
  QList<QSharedPointer<A>> m_a;
}
A类;//<抽象基类
B类:公共A类;
丙级:甲级;;
D类:公共A{
QList m_a;
}
现在我想编写代码来可视化
列表
。类的可视化需要区分它们的真实类型。 显然,我不想将数据中的依赖项添加到可视化代码中


有没有一种优雅的方法可以在不使用基于动态强制转换的条件的情况下实现这一点?

你看过吗?@TartanLlama是的,我看过了。但据我所知,访问者基类必须知道
A
的所有后代。此外,每个子体
accept
-方法的实现必须知道访问者基类,否则编译器无法选择正确的
visit
-重载。在我看来,它也不是那么优雅,因为它添加了很多锅炉板代码和某种循环依赖。但你是对的;它可以产生大量的样板文件。但这就是你的设计模式;)