Доступ к подмножеству (не поддереву) иерархии объектов - PullRequest
0 голосов
/ 27 января 2009

У меня есть базовый класс "Node", который содержит список дочерних узлов. Узел определяет функцию "forEachNode", которая принимает обратный вызов в качестве параметра и вызывает его на каждом узле в иерархии.

У меня есть класс, производный от Node - "SpecialNode" (на самом деле это не имя, которое я бы выбрал - просто пример!). Узел ничего не знает о SpecialNode.

Я хочу перебрать только специальные узлы. Я дошел до того, что SpecialNode определяет обратный вызов для передачи в «forEachNode», но я не уверен, как вызвать обратный вызов только для SpecailNodes. Любой совет?

1 Ответ

1 голос
/ 27 января 2009

Вы можете попробовать что-то вроде:

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

Или вы помещаете виртуальную функцию в Node для вызова из функции обратного вызова, которую вы можете реализовать по-разному в подклассах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...