Better is to make classes full of just function. It may look a little weird having something like CCAMERA Camera; at the start of the page but you might want to look at it like having several different files, one of them called Camera, and the functions in Camera-> concern the Camera.
So with a particle engine say, you might have a class like this:
class CPARTICLE{public: CPARTICLE(); void CalcPaticle(); void DrawPaticle(); ~CPARTICLE();private: int x,y,z; int frame;//if we are using a bitmap that is composed of // diffrent frames - for animation bool active;}
and you might have another one for font:
class CFONT{public: CFONT(); bool InitFont(char * FontName, int FontSize); void Write(char * WhatToWrite); void ChangeFont(char * FontName, int FontSize); void DeInitFont(); ~CFONT();private: char * FontName; int FontSize;}CFONT Font;
This isn''t a direct example or anything, I just did it off the top of my head thinking what I''d put in a font class. Anyway, you get the idea - you might have another class for Rendering, OpenGL, DirectX, Vectors, Matrices, Quaternions, Networking, Timer, BSP Maps, Half Life Models, Quake 3 Models, Ogg Vorbis, Wav, OpenAL, shadow volumes, heightmaps, bump mapping, pixel shading, vertex shading, portals, and alot more. You can''t just "divide the engine into different sections" as the engine is a collection of classes intertwined to help make a game. And if you don''t know how to do each one of the things above, don''t even start making a full game engine! If you don''t know how to do the AI for a basic game, don''t even start making a full game engine.
If you do, though, go ahead!