En C++, una alternativa es usar excepciones..
El do-while modificarlo para que capture una excepcion y llame a la funcion error que ya tienes
Código C++:
Ver originaldo {
try {
// mostrar opciones de menu
// realizar accion asociada
}
catch( UnaExcepcion e )
{
error( e ); // ya existe.
}
} while(1);
y en las funciones, en vez de invocar a error, arrojar una excepcion
Código C++:
Ver originalif( condicion_mala ) {
// error("hubo un error" ); // no hacerlo, arrojar una excepcion como abajo
throw UnaExcepcion("Algo muy muy malo ocurrio");
}
Para que todo compile y funcione "UnaExcepcion" la defines como una clase cuyo constructor tiene que calzar con la invocacion que decidas que mas te conviene, o bien derivas desde std:exception.