Este es mi código (simplificación de un problema de la vida real):¿Cuál es una buena alternativa a esta construcción fea, en C++?
class Foo {
public:
void f(const string& s) {
if (s == "lt") {
return lt();
} else if (s == "lte")
return lte();
} else if (s == "gt")
return gt();
} else if (s == "gte")
return gte();
}
}
void lt() { /* skipped */ }
void lte() { /* skipped */ }
void gt() { /* skipped */ }
void gte() { /* skipped */ }
};
Ésta es la forma en que lo haría en PHP/Python/JavaScript/muchos otros idiomas (ejemplo en PHP):
class Foo {
function f($s) {
return $this->$s();
}
function lt() { /* skipped */ }
function lte() { /* skipped */ }
function gt() { /* skipped */ }
function gte() { /* skipped */ }
}
¿Cómo puedo hacer que mi código de C++ sea tan elegante como este ejemplo de PHP? Gracias por adelantado.
¿Qué pasaría en PHP si el argumento $ s es incorrecto? – Arseny
se puede agregar una prueba, pero creo que la pregunta no es acerca de lo que se puede agregar para evitar la situación en el código PHP – ShinTakezou
¿Por qué no utilizar un interruptor? –