Hi Ryan, NodeVisitor's subclasses are meant to only override the methods they need to. It's what makes the convinient and powerful.
The documented problems which the warning "issue" relate to aren't relevent to NodeVisitor usage. This compiler warning "issue" is in practice just a distraction that will lead to more code bloat and potential problems. FYI, different compilers have complained about this "issue" on and off for the last decade but not once in the history of the OSG has there been a bug due to this "issue". Adding a using osg::NodeVisitor::apply to all subclasses just to quieten down a silly warning is what I would call a good coding practice. Robert. On Wed, Jun 22, 2011 at 5:17 PM, Ryan Pavlik <[email protected]> wrote: > All, > I've been working to get all the code I use to compile cleanly using Clang, > which is a faster, stricter, yet more helpful compiler than gcc. I actually > would like to get things to build cleanly with -Wall -Wextra in Clang since > those are often potential errors. I'll submit a full warnings log in a > later email along with the build patches, but I wanted to mention one issue > separately. > Apparently resolution of overloaded functions takes place on the name only, > rather than the full signature, which interacts with virtual functions. In > NodeVisitor, a number of virtual functions are declared with the same name, > apply, as required for the visitor pattern. It seems that according to the > standard, unexpected things may happen if not all overloads are implemented > in a subclass. The best discussions of this issue that I've found so far are > here: > http://www.codeguru.com/forum/showthread.php?t=459396 > https://groups.google.com/forum/#!topic/mozilla.dev.builds/60CACLzH_YM > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20423 > https://www.securecoding.cert.org/confluence/display/cplusplus/OOP03-CPP.+Prefer+not+to+overload+virtual+functions > - note that the ideal solution is only mentioned in the comments > The apparent best solution is for all NodeVisitor subclasses to include a > line equivalent to: > using osg::NodeVisitor::apply; > (replacing osg::NodeVisitor with a more specialized base class where not > inheriting directly from NodeVisitor) > That said, I haven't worked on this too long or done extensive testing, but > it is an issue I wanted to bring up. > Ryan > > -- > Ryan Pavlik > HCI Graduate Student > Virtual Reality Applications Center > Iowa State University > > [email protected] > http://academic.cleardefinition.com > > _______________________________________________ > osg-users mailing list > [email protected] > http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org > > _______________________________________________ osg-users mailing list [email protected] http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

