Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Zodiak98 en 25 Diciembre 2014, 18:46 pm



Título: Pregunta sobre funciones anónimas en C++ [Lambda].
Publicado por: Zodiak98 en 25 Diciembre 2014, 18:46 pm
Bueno, es un poco tonto preguntar esto, pero la verdad es que me puse a practicar con las funciones anónimas, y me da un error, tuve dudas así que me puse a practicar con este código simple y me dió el mismo error. ¿Alguien me puede decir qué estoy haciendo mal? Gracias de antemano. :)

Código
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. int main(void)
  7. {
  8.    int x = 2;
  9.  
  10.    int (*funcion1)(int) = [x](int a)
  11.    {
  12.        return (a * x);
  13.    };
  14.  
  15.    cout << funcion1(8) << endl;
  16.  
  17.    system("pause>null");
  18.    return 0;
  19. }


Título: Re: Pregunta sobre funciones anónimas en C++ [Lambda].
Publicado por: SrCooper en 25 Diciembre 2014, 19:22 pm
No sé muy bien por qué la estás declarando así. Yo lo haría de la siguiente manera:
Código
  1. auto funcion1 = [x] (int a) {
  2.      return (a * x);
  3.    };

Donde el tipo de la función es:
Código
  1. function<int (int)>

Si prefieres no usar auto no te olvides de incluir la libreria <functional>. Y en ningún caso te olvides de compilar en modo C++11.

Un saludo y feliz navidad  ;)

PD: Por cierto, no es recomendable hacer llamadas al system al final del programa. Una llamada a std::cin.get() será mucho menos costosa y hará prácticamente lo mismo.