Pregunta sobre funciones anónimas en C++ [Lambda].

Iniciado por Zodiak98, 25 Diciembre 2014, 18:46 PM

0 Miembros y 1 Visitante están viendo este tema.

Zodiak98

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 (cpp) [Seleccionar]
#include <iostream>
#include <cstdlib>

using namespace std;

int main(void)
{
    int x = 2;
   
    int (*funcion1)(int) = [x](int a)
    {
        return (a * x);
    };

    cout << funcion1(8) << endl;

    system("pause>null");
    return 0;
}

SrCooper

#1
No sé muy bien por qué la estás declarando así. Yo lo haría de la siguiente manera:
Código (cpp) [Seleccionar]
auto funcion1 = [x] (int a) {
     return (a * x);
   };


Donde el tipo de la función es:
Código (cpp) [Seleccionar]
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.