2009-01-27 74 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