zerkms, изменение области видимости методов базового класса на protected - в таком случае мы теряем возможность напрямую работать с TheRegistry (создать объект этого класса).
уж лучше явно определить register/unregister в cMarkersBox - закрыть возможность их использования.
т.е. наследуем мы в данном случае не потому что это идеологически правильно (с точки зрения ооп), а потому что:
1. cMarkersBox специфичное, но все же хранилище. логично, что оно должно наследоваться от базового хранилища.
2. не нужно явно создавать объект.
3. как следствие 2 - полностью абстрагируемся от того, какое это хранилище.
предлагаю сойтись на том, что имеют право на жизнь оба подхода - в каждом есть свои плюсы и минусы.