Before presenting the question proper, I'll provide the train of thought I went through, if only to try and figure out different reasoning on the way there.
I made a virtual base class for game objects, Entity, and I have two basic objects that derive from it: Player, and Block. Each owns several variables, amongst them an LPDIRECT3DTEXTURE9 member that stores their sprite's information. So I started thinking about how I was going to store surfaces; for instance, the background, or maybe a foreground layer. For a foreground in specific, it would require both a transparency value and a position. So I thought to make a Surface class to store that information. So then I started to work on my SceneManager's class for iterating through my list of game objects and having them drawn to the screen, and I started thinking about how to load the background image for the level. I realized that it would be clunky to make a subclass for every use of a background, because they aren't distinct enough to warrant making a subclass for them per level and I felt there was a [much] better way. So I thought, why not make a Level class? This is where I started to run into further difficulties.
So in case one, I thought I would make a virtual base class for Levels that other levels would derive from, since I've been really into this whole inheritance thing, but then thought about it for a little bit and figured that might be a bad move; if I was going to have practically identical levels that accomplish the exact same things-- providing a background tileset and providing positions for certain objects to go, with no behavioral differences other than aesthetic, then why would I make classes for each one I need? What if there are a hundred levels? I wouldn't want to make Level1, Level2, Level3... Level(n) subclasses.
So I figured that my other option was to have a single Level class that stored generic information about a level. But then I thought about implementing this; if I start up SceneManager.Init() and I feed it a value of say, 5, for Level 5, how would my generic Level class know exactly what to load? Surely I wouldn't hard code this information in like, a switch statement? I'd probably load in a text file for the tiled backgrounds, but how would I know where to load objects depending on the level? Would I need an array of data for information regarding position and object type?
Any suggestions or helpful input?