I'll check that out when I get a chance. For now, I created an Entity class with a 3D vector for position and updating those objects and updating the surfaces using the position x and y coords.
entity.h
class Entity
{
public:
Entity();
~Entity();
Vector3 GetPos() const;
void SetPos(const Vector3 pos);
private:
Vector3 position;
};
app.h
Entity hero = new Entity;
hero->SetPos( /* wherever */ );
SDL_BlitSurface( heroSurf, NULL, screen, &destRect );
Like, similar to that. Then create a bounding box (using SDL_Rect) and basically use an early-out to check the sides. Like, if the left of rect x is greater than the right of rect y, it can't possibly be overlapping on the horizontal. etc etc
Dunno if it's the best way but it's how I did my (terrible) breakout clone in my school game programming framework.
Edit: there's obviously more to it, but yeah. Soon as I get something working (ie: an actual level perhaps) I'm planning on releasing the source for people to scrutinize and help me improve.