class Entity {
void addChild(Entity* e);
};
class Control : public Entity {
};
我想要做的是不允许添加控件作为东西的孩子,这不是一个控制。因此,举例来说:
Control c;
Entity e;
e.addChild(c); // This line would throw an error (at compile time if possible);
我想到的是增加这实体的第一件事:
void addChild(Control* c){
assert(false);
};
注:实体和控制都是抽象类,但两者有很多子类。
但是有什么办法可以在编译时得到错误吗?
我建议只是重新设计你的类层次结构,这样你就不会想要在派生类中使用的固有函数。 – sashang
也许你可以用'Entity'作为*抽象类*,那么就不可能实例化一个Entity对象。 – Simon
我与sashang:如果你需要明确禁止使用派生类作为基类,那么很有可能公共继承不是你想要做的。公有继承的要点是你可以使用派生类作为基类。如果你不得不禁止它,这可能是你的课堂布局和设计结构中的一个问题。 –