2009-01-27 79 views
0

我有一个基类“节点”,其中包含一个子节点的列表。 Node定义了一个“forEachNode”函数,它将回调作为参数并在层次结构中的每个节点上调用它。我有一个派生自Node的类 - “SpecialNode”(不是我真正选择的名称 - 只是一个例子!)。节点对SpecialNode一无所知。访问对象层次结构的子集(而不是子树)

我想迭代只是SpecialNodes。我已经到了SpecialNode定义一个回调传递给“forEachNode”的地步,但我不确定如何仅为SpecailNodes调用回调。有什么建议?

回答

1

你可以尝试这样的:

if (dynamic_cast<SpecialNode*>(n) != NULL) { 
    do_something(); 
} 

或者你把一个虚函数的节点,以从中您可以在子类实现不同的回调调用。

+0

这两种音效对我来说都很好 - 谢谢! – 2009-01-27 09:59:41