【发布时间】:2011-12-19 09:31:20
【问题描述】:
我需要通过保护基类从基类中抽象出许多接口,但我还需要对简单的祖先类Object 进行公共访问。我是否可以协商 dreaded diamond 而无需对这些祖先进行写入/编辑访问,并且仍然只提供一个基本 API,但再次公开 Object 的 API?
class Object {
virtual bool Equals (const Object &obj) const;
virtual int GetHashCode (void) const;
};
class ComplicatedOne : public Object {
//Lots of funcs I don't want or need.
};
class Line : protected ComplicatedOne, public Object {
//Some funcs of ComplicatedOne get re-implemented or called by alias here
public:
virtual bool Equals(const Object &obj) const {
return Object::Equals(obj);
}
virtual int GetHashCode() const {
return Object::GetHashCode();
}
};
class Array {
void Add (Object &obj);
Object *GetAt (int i);
};
main() {
Array a;
a.Add(new Line());
}
【问题讨论】:
标签: c++ inheritance multiple-inheritance access-specifier