duda funciones c++

freskito24

Quería saber si se puede hacer esto en c++ de alguna forma

void funcion ( expresion )

if (expresion)
{
haz lo que sea
};

pudiendo ser expresión cualquier cosa por ejemplo un puntero a una estructura: puntero->pos_x > 20

quedando así cuando llames a la función:

funcion ( puntero->pos_x > 20 );

La idea era que la expresión se definiera en otra parte del código como una cadena de texto dependiendo de las opciones que pusieras.

¿Existe alguna forma "correcta" de hacer esto? Gracias.

(Si queréis explicar algo para semi-dummies pls)

dagavi

C++ no hace eso.

Obviando el tema de que puedas pasar como una cadena de texto la expresión, una forma de "simularlo" es pasar un puntero a una función, es decir:

void funcion ( bool  (*f) () ) {
    if (f()) ....
}
Ejemplo

Deberías definir todas las funciones que quieres que sean evaluadas (y ejecutadas). Tal vez también puedas hacer que tenga un número indefinido de parámetros (nunca he trabajado con esto).

C++ no tiene un evaluador de expresiones de serie, tal vez alguien conozca algo por el estilo (pasas un string y algunos argumentos y lo pueda evaluar), pero sería una librería externa (que yo sepa)

Usuarios habituales

  • dagavi
  • freskito24