I have a tree containing various subtypes of the my base node class. I now want to traverse this tree and do something with the nodes depending on their type.The most straightforward idea is to just define a method doSomething in my base node class, but this means that to add functionality I have to add a method to all existing node subtypes.The first thing that comes to mind to solve this is the Visitor pattern. However, I want to be able to create new subtypes without having to change all existing visitors - I want the new subtypes to inherit the way they are handled from their base type.I think using dynamic_cast should do the trick, but I understood that it is a costly operation, and it will be called a lot, so that is not a good solution. And many people say it is a sign of bad design, although I do not see the problem in this case.At this moment I am using the first solution as I see foresee much more added types than functionality, but is there a better way to do this?
Expandable alternative to Visitor pattern for tree traversal?
design patterns;c++;c++11;trees