C++ Entity-Component system