> When I change the code to what you suggested above it gives me compiler errors...

Yes, you will need to change the Box usage of Rectangle to reflect the constructor. The error occurs because Rectangle::Rectangle() doesn't exist (you've changed it to Rectangle::Rectangle(double,double)).

> I am feeling the way he is wanting us to do this problem is making things more difficult then they should be.

Depends. I don't know the context of the course, i.e. what you've done in the past. Maybe Rectangle was only ever meant to operate for 1x1 squares and we're now looking at class derivation. The Box class will work for boxes of any size so I don't understand why Rectangle is so limited. Possibly the point is that even though Rectangle only works for 1x1 squares due to there only being a parameterless constructor that initialises length and width to 1,1, this doesn't limit Box to 1x1xN cuboids.

> Would this be the correct formula to calculate the surface area of Box b?

Yes. For extra smartie points you could show you understand how to access overloaded functions from classes lower down the object hierarchy by changing that to
Code:
return((2*Rectangle::area())+(2*width * depth)+(2*length*depth));
and if he makes a comment about lower performance ask him about code profiling and what he thinks about premature optimisation <grin>