LINUX.ORG.RU

История изменений

Исправление intelfx, (текущая версия) :

Пишем в базовом классе виртуальный метод (рекурсивный), специализируем его для наследника нужным образом - профит!

Говорю же — в упор не вижу, что можно вытащить в базовый класс. У add_child()'ов и children() сигнатуры разные, т. к. в зависимости от типа узла к каждому потомку прилагаются свои «метаданные». Методы, определённые в Node::Value, специфичны именно для чисел — неужели нужно вытащить их в Node::Base и заставить возвращать boost::optional? И так везде.

Говорят что юзание каста хороший повод задуматься, м.б. ты что то делаешь не так.

Ну так я и хочу узнать, что конкретно у меня не так (и что конкретно сделать, чтобы было «так»).

dynamic_cast вреден — почему? (комментарий)

Исходная версия intelfx, :

Пишем в базовом классе виртуальный метод (рекурсивный), специализируем его для наследника нужным образом - профит!

Говорю же — в упор не вижу, что можно вытащить в базовый класс. У add_child()'ов и children() сигнатуры разные, т. к. в зависимости от типа узла к каждому потомку прилагаются свои «метаданные». Методы, определённые в Node::Value, специфичны именно для чисел — неужели нужно вытащить их в Node::Base и заставить возвращать boost::optional? И так везде.

Говорят что юзание каста хороший повод задуматься, м.б. ты что то делаешь не так.

Ну так я и хочу узнать, что конкретно у меня не так (и что конкретно сделать, чтобы было «так»)...