Dev - C++ - llamar a función cuyo nombre esta en una variable como string

   
Vista:

llamar a función cuyo nombre esta en una variable como string

Publicado por gaston (2 intervenciones) el 22/11/2014 21:16:06
Buenas!

Gente estoy intentando hacer unas clases genéricas (para una especie de ORM) y me encontré con la siguiente traba:

necesito poder llamar a una función o método de una clase c++, que previamente ingrese o puse en una variable o lei de un xml:

using namespace std;

void getName()
{
return "nombre";
}
int main()
{
string nombre;

cin >> nombre; //por consola ingrese "getName"

cout << "resultado de la llamada " + nombre(); << endl;

return 0;
}

Obviamente este código no funciona, es para representar lo que quiero hacer a grandes rasgos, osea poder llamar a una funcion de c++ que defini en un string o del flujo de entrada.

No me sirve esto:

void callFunction(string name)
{
if (name == "getName") {
getName();
} else if (name == "getApellido") {
getApellido();
}
}


en otros lenguajes como php se puede hacer esto:

function nombre_metodo() { return 0;}

$variable = "nombre_metodo";

$variable(); //esto llamara a un metodo cuyo nombre sea igual al definido en la variable!

alguien tiene alguna idea? gracias desde ya.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

llamar a función cuyo nombre esta en una variable como string

Publicado por Jose Manuel (30 intervenciones) el 22/11/2014 21:38:50
Lo dudo... pero mira aqui

http://www.cplusplus.com/search.do?q=call+function

Y aqui

http://www.cplusplus.com/forum/windows/22406/

Ten en cuenta a todo esto, que Php es interpretado, y C++ compilado, y eso implica muchas diferencias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

llamar a función cuyo nombre esta en una variable como string

Publicado por gaston (2 intervenciones) el 22/11/2014 22:56:49
Gracias! me sirvieron muchisimo los links para sacar ideas!, grax!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp

llamar a función cuyo nombre esta en una variable como string

Publicado por vangodp (287 intervenciones) el 23/11/2014 04:27:59
Y si pruebas un puntero a funcion?
Asi puedes asignar cualquier funcion a un puntero especifico y trabajar de forma parecida a lo que querias XDD
Es mas.. No subestimes a C++ que si algo no puedes hacer en C++ seguro será menos probable que hagas en otros lenguajes XDD.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
const char *getName() {
    return "nombre";
}
 
int main() {
    char const * (*fptr)();
 
    fptr = &getName;
 
    cout << fptr();
 
    return 0;
}
int const * (*fptr)(); fptr es un puntero a función que no recibe argumentos y devuelve un puntero a un int constante
http://www.zator.com/Cpp/E4_2_4.htm

Es mas... En la linea de lo que quieres tu, esto es exactamente lo que has pedido.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//puntero a funcion
#include <iostream>
using namespace std;
 
string foo(){
    return "foobar";
}
 
int main (){
    string (*s) ();
 
    s = &foo;
 
    cout << "esto es lo que retorna: " + s() << endl;
 
 
    cin.ignore();
    return 0;
}
Suerte ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar