考虑这些课程:
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
类之一。
我知道这看起来不太好,但我找不到出路(完整的设计是复杂的方式,这里讨论)。最简单的方法是什么?
答案 0 :(得分:1)
您可以在C ++中进行多级继承,并在每个级别添加越来越多的专业化。所以我会用以下方法解决它。
struct Bar : public Abstract {
int bar;
};
struct Bar1 : public Bar {};
struct Bar2 : public Bar {};
然后,所有BarX
个对象都有一个公共属性bar
。