Come to think of it, any report class that legitimately has a null use case and that might only need a partial implementation in many cases really should not be pure virtual at all. A possibly cleaner solution to all this is to merge DisplayReport with null::DisplayReport.
Come to think of it, any report class that legitimately has a null use case and that might only need a partial implementation in many cases really should not be pure virtual at all. A possibly cleaner solution to all this is to merge DisplayReport with null::DisplayRe port.