I have a Level class from which some special level types are derived, but most of the code is in Level class. It has also a member Level_Map class which is kind of strange, because it could have more low level generation code. Also, there are separate classes for most feature generation (corridors, rooms, rivers, etc.).
Since Level has roughly two main operations: generation and then actions that happen in level during the gameplay, my plan is divide the class to "base" class with generation and actual Level class with gameplay operations. In a way Level_Map is redundant so it could be a part of that base class.
The deriving style is probably not important, because I just want to split the class to those two main operations, because it's so huge. I may have to open the base class to public access I guess. I'm mostly thinking out loud, but if someone has more experience on OOP I'm happy to know your opinions.