したがって、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 の子にアクセスするたびに、明らかに、specialNode* ではなく Node* が取得されます。
しかし、この specialNode* には、Node にはないメンバー変数と関数があります。
specialNode が子としてのみ specialNode を取得し、それ以外の場合はコンパイル時に中断するように強制することはできますが、子/親にアクセスするときに Node* を取得し、specialNode 関数であっても、特別な関数を使用するときはいつでもそれをキャストする必要があります。
これを行うための賢い方法、またはより良い方法はありますか? 文字通り毎回キャストする以外に?