我有一个基类“节点”,其中包含子节点列表。节点定义一个“ forEachNode”函数,该函数将回调作为参数,并在层次结构中的每个节点上调用它。
我有一个派生自Node的类-“ SpecialNode”(实际上不是我要选择的名称-只是一个示例!)。 Node对SpecialNode一无所知。
我只想遍历SpecialNodes。我已经到了SpecialNode定义要传递给“ forEachNode”的回调的地步,但是我不确定如何仅针对SpecailNodes调用该回调。有什么建议吗?
最佳答案
您可以尝试如下操作:
if (dynamic_cast<SpecialNode*>(n) != NULL) {
do_something();
}
或者,您可以在Node中放置一个虚函数,以便从回调中进行调用,您可以在子类中以不同的方式实现。