我需要通过保护基类从基类中抽象出许多接口,但我还需要对一个简单的祖先类进行公共访问Object
。我是否可以在没有对这些祖先的写入/编辑访问权限的情况下协商可怕的钻石Object
,并且仍然只提供一个基本 API,但再次公开 's 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());
}