tengo que hacer una clase Expr tener interfaz pública como esto:¿Cómo se maneja un argumento sintácticamente válido pero lógicamente inválido pasado al constructor?
class Expr{
//...
public:
Expr(const char*);
int eval(); //Evaluates the expression and gives the result
void print();
};
En el diseño, si el usuario introduce una cadena no válida para construir un objeto Expr como "123 ++ 233 + 23/45", lo haría es correcto construir el Objeto inicialmente y notificar el error cuando eval() se llama a ese objeto.
O el error se debe comprobar en ese punto y se lanzará una excepción, aunque eso llevaría a un serio aumento en el tiempo de ejecución. Y el usuario puede escribir el código furthur con la suposición de que se creó Object y descubrirá el error en tiempo de ejecución solamente.
Tales problemas surgen siempre al crear una clase, ¿existe una forma bastante estándar de manejar dichos errores realizados por el usuario? ????
evaluar la expresión directamente en el constructor? – ApprenticeHacker
Ver [aquí] (http://stackoverflow.com/questions/1158410/how-to-handle-incorrect-values-in-a-constructor). Además, considere marcar su constructor 'explicit'. –
O más bien usando algún otro código eficiente como función estática solo para ese propósito, me refiero a cualquiera de las dos formas ... – bhuwansahni