>I always hesitant about child classes that have pointers to their owners. It feels like the structure is wrong.

I think they're fine if they are locally (to parent's methods) instantiated objects, in which case they are simply encapsulating a piece of the larger classes functionality.

Anyway in this case I'm not fussed, I can take out 'owner' and add a clear() instead.