从多态指针检查类成员的存在性?

时间:2015-07-20 08:16:34

标签: c++ inheritance polymorphism

考虑这些课程:

Struct Bar1: Abstract {
  int bar;
};

Struct Bar2: Abstract {
  int bar;
};

Struct Foo1: Abstract {
  int foo;
};

Struct Foo2: Abstract {
  int foo;
};

您将获得Abstract * p;,并且您想检查是否可以使用它来访问成员bar。这显然要求p指向您可能在将来添加的Bar1, Bar2或任何其他BarX类之一。

我知道这看起来不太好,但我找不到出路(完整的设计是复杂的方式,这里讨论)。最简单的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以在C ++中进行多级继承,并在每个级别添加越来越多的专业化。所以我会用以下方法解决它。

struct Bar : public Abstract {
    int bar;
};

struct Bar1 : public Bar {};
struct Bar2 : public Bar {};

然后,所有BarX个对象都有一个公共属性bar