You're question is too big (for me) to cover with just 1 right answer.
So here's my share:
- when you have headers that you want to include in several places, 'ifdef' them
(so they're just compiled once)
#ifndef CD3DCAM_H #define CD3DCAM_H
(top of your headers)
- in general a class should have 1 purpose only (like mentioned above)
- when you want to make a 'game engine', think of modules, for example:
-- scenes/ levels
-- meshes ( --- submeshes etc.)
You could use a namespace for each 'module'