Creating an abstract node class is slightly different from creating a nonabstract one. Examples of abstract node classes are SoCamera SoCamera SoCamera , SoLight SoLight SoLight , and SoShape SoShape SoShape .
First, abstract classes should use the ABSTRACT versions of the macros described in SoSubNode.h. For example, the SoLight SoLight SoLight class makes this call in its initClass() method:
SO_NODE_INIT_ABSTRACT_CLASS(SoLight, "Light", SoNode);
Second, the constructor for an abstract class should be protected, meaning that it is impossible to create an instance of it.