I don't think this is the best system. It's not really maintainable, and I doubt you'll be able to get reasonable framerates once you have a relatively small amount of instances of child classes going around. (which may or may not be important depending on quite a few factors).
One of your main problems here is that you're trying to be too generic. Think about how your system would handle this. These systems have pretty much
nothing in common from that standpoint. Not only will this pretty much kill any chance of cache coherency (which seems like it won't be an issue, but multiple tiny costs really do add up), but it's not maintainable. You'll end up either having not enough features in the base class, or too many in it. Making something like this is much more trouble than it's worth. Your system sounds good in theory, but it will not work out in practice. I tried doing something like this when I was new, and it really sucks when you have to delete thousands of lines of code just because you over-engineered a system without thinking it through.
I went more into design in this thread (second to last post on the first page)
http://www.cplusplus.com/forum/beginner/152947/
it's worth a look.
Even things that might be similar are
completely different when it comes to how the hardware processes it. And once you think about it, it doesn't make any sense from the programmer standpoint either.
Pretty much abandon everything that you've been taught about OOP, and think about how your hardware would like it. It seems like a large task, but it's worth it in the end.
While this doesn't directly answer your question, it's a (better) alternative.