You should take a look at the (Un)delphix DXSprite.pas unit. It's a great example of what a sprite-engine could look like. I learned alot of tricks (including some OOP) form that unit.

Code:
...
for each TSprite
{
 Draw();
};
...
Does this really work in C++? I've never seen anything like this (Iterating through all instances of a type). It looks more like python, If it's at all possible.