Just to expand on what CRane said:
When you create an object that is a derivative (ie. your box class), not only is its constructor called, but so is its parents (this goes for destructors as well. It looks something like this:
Create a new BoxType- cSpriteBase's constructor is called - BoxType's constructor is calledDelete the BoxType we created - BoxType's destructor is called- cSpriteBase's destructor is called
So if you look at your code, you're cSpriteBase class's constructor takes a string for a parameter. So when you create your BoxType object, as describe above, the compiler automatically tries to call the cSpriteBase constructor, but it doesn't know what to pass for that string parameter.
So in the code Crane posted, he implicitly tells the cSpriteBase what to use as the string parameter. Alternativly, you could add a default constructor (ie. cSpriteBase();) and it would compile, but probably not do what you want.
Hope I didn't just make that more confusing [wink]
Matt Hughson