So, you'd like the literally have the camera move in the direction the camera is facing, even along the Y-axis? For example, if you're looking 45 degrees up, you'd like the camera to move up the Y-axis?

If this is the case, then you would want to add this line to your MovableObject::moveForward() method:

m_position.y += sin(m_rotation.x) * distance;

Keep in mind, that sin() and cos() give you the normalized components of a vector along the unit circle. Using sin() and cos() with x and z will give you a direction vector with the length of 1 because it's normalized. When you add m_position.y into the mix, you're actually making the direction vector longer than 1 unit (before you scale it by distance).

The best thing to do is find your direction vector, normalize, then multiply by distance like so:

Depending on your coordinate system, you may want to change direction.x to +cosf() and direction.z to -sinf(). You'd also want to scale your "distance" float by the elapsed time between frames in your update loop if it's not already so it moves smoothly regardless of framerate.