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:如果你需要明確禁止使用派生類作爲基類,那麼很有可能公共繼承不是你想要做的。公有繼承的要點是你可以使用派生類作爲基類。如果你不得不禁止它,這可能是你的課堂布局和設計結構中的一個問題。 –