The Best practice is to keep things as SIMPLE as possible . so if this is enough for you it's ok .
But when will make a bigger game with hundreds or thounds of objects this will no longer be manageable.
So what you will do is create a GameObject class and then derive other classes from it with different functionality . You will put all these instances in an array of GameObjects like this
std::vector<GameObjects*> m_objects;
Then you will have a GameLevel class which will manage your objects
In a GameLevel::Init methods you will iterate over your objects and init them then you will do the same with your Update and Render methods
Then after many years and many games ship your hierachy will become very deep You will have derived many objects from from many other objects everything will be tightly coupled and all your code will be Spaghetti Code
And then you will look into Component Systems and you will check out this http://stackoverflow.com/questions/1901251/component-based-game-engine-designhttps://stackoverflow.com/questions/1901251/component-based-game-engine-design and this Component-based game object systems in practice