Depending on the level I was trying to achieve, I would...

Using standard C system multiple files, with static and private (local) members and accessor methods (data hiding techniques, some encapsulation) - however, you're looking at one file per object with no way to create objects on the fly.(*) Still it implements an interface, allowing you to change the implementation of the object at a later date without changing your main routine.

Use structs with void function pointers (nastier programming in my opinion), but that would allow you to create objects on the fly and encapsulate their member functions. (More object like - but I would use a factory to create these thingy)

But then again, I'm not sure what's that wrong with C++....(but that's just me)

(*) Correction - provide a typedef...