所以假设我在 C++ 中有一个像这样的树类
class Node{
void addChild(Node*);
/*obvious stuff*/
protected:
Node* parent;
vector<Node*> children
}
class specialNode : public Node{
void addChild(specialNode*);
/*obvious stuff*/
/*special stuff*/
}
现在,每当我访问 specialTree 中的子项时,我显然得到的是 Node*,而不是 specialNode*。
但是这个 specialNode* 有 Node 没有的成员变量和函数。
我可以强制 specialNode 只将 specialNode 作为子节点,否则会中断编译时间,但在访问子节点/父节点时我仍然会得到 Node*,并且每当我想使用特殊函数时,我都必须强制转换它,即使在 specialNode 函数中也是如此。
有什么聪明的,或者更好的方法来解决这个问题吗?除了每次都按字面意思投射?