title: C++ how do I make a 2d engine platform independent
body: <p>Create a simple 2D sprite engine with a cross platform, abstracted API
  ■ The demo should be completely cross platform and have no platform specific headers
  ■ The cross platform code is isolated completely from platform dependent code, in that there is no trace of any includes of platform specific headers in any platform independent files.</p>
  
  <p>I have this assignment, but I'm terribly confused as to how I can make something cross platform. I already have an engine capable of doing the things it has to, but I need it to be crossplatform. I am mostly wondering what things I can include (or, How do i know if something uses platform specific code), and if i can't include things because they are platform specific, I don't know how i can use that functionality without including it. Solution lies somewhere in abstraction and Pimpl according to a fellow student, but I can't find it.</p>