I think you could use a list of ActionObject* and at() instead of the index operator.
Or use a std::list that copies when copied.

Cheers,
_