elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  Igualar Funciones
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Igualar Funciones  (Leído 4,804 veces)
Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Igualar Funciones
« en: 22 Enero 2010, 23:44 »

Pues nada, me preguntaba si era posible en C o C++ igualar funciones


Código:
/*
...
*/
std::string funcion_a(void)
{
return "a";
}


std::string funcion_b(void)
{
return "b";
}

/*
...
*/

funcion_a = funcion_b;   // Esto por supuesto no funciona

// Y esto que imprima en lugar de "a", una "b"
std::cout << funcion_a() << std::endl;

/*
...
*/



En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
toruk makto

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: Igualar Funciones
« Respuesta #1 en: 23 Enero 2010, 00:00 »

Yo diria que no, porque al sacar por pantalla, vuelves a llamar a la funcion. En todo caso, creo que funcionaria si declarases otra variable string que tomase como valor lo que devuelve la funcion.
Pero puedes comprobarlo tu mismo, haz dos funciones que hagan lo que tu explicas, una que te devuelva una a, y la otra una b, e intenta hacerlo.

Saludos!!


En línea

Zzombi

Desconectado Desconectado

Mensajes: 174



Ver Perfil WWW
Re: Igualar Funciones
« Respuesta #2 en: 23 Enero 2010, 00:14 »

que quieres hacer exactamente? es decir, para que quieres hacer eso? de seguro hay otra alternativa  ::)

En línea

[L]ord [R]NA


Desconectado Desconectado

Mensajes: 1.513


El Dictador y Verdugo de H-Sec


Ver Perfil WWW
Re: Igualar Funciones
« Respuesta #3 en: 23 Enero 2010, 00:32 »

Claro que deben  de existir alternativas... La pregnta es que se quiere hacer (Hacer que la funcion A realice lo que hace la funcion B) en ese caso la funcion A seria un puntero a una funcion... que tomaria la direccion de la funcion B y la ejecutaria.

Verdaderamente no se me ocurre para que  quiere hacer esto si no es lo que explico mas arriba
En línea

O-LLOS-O


Desconectado Desconectado

Mensajes: 324


tengo 14 invitaciones para locker-z enviar mp


Ver Perfil
Re: Igualar Funciones
« Respuesta #4 en: 23 Enero 2010, 07:54 »

no!!
una funcion no es una variable no almazena informacion por lo tanto no lo que si que puedes hacer es esto:

funcion_A == funcion_B

Lo cual debuelve un bool
« Última modificación: 23 Enero 2010, 11:55 por O-LLOS-O » En línea

.;.


Desconectado Desconectado

Mensajes: 354


Ver Perfil
Re: Igualar Funciones
« Respuesta #5 en: 23 Enero 2010, 11:22 »

no!!
una funcion no es una variable no almazena infoemacion por lo tanto no lo que si que puedes hacer es esto:

funcion_A == funcion_B

Lo cual debuelve un bool
Eso que dices lo único que hace es demostrar si es lo mismo.

Y punto.
En línea

O-LLOS-O


Desconectado Desconectado

Mensajes: 324


tengo 14 invitaciones para locker-z enviar mp


Ver Perfil
Re: Igualar Funciones
« Respuesta #6 en: 23 Enero 2010, 11:54 »

ya... si no digo lo contrario... por eso digo que retorna un bool
En línea

toruk makto

Desconectado Desconectado

Mensajes: 25



Ver Perfil
Re: Igualar Funciones
« Respuesta #7 en: 23 Enero 2010, 12:33 »

Coincido con LLOS, solo funciona al hacer comparaciones, pero no al "igualarlas" (que por cierto, un profe de programación que he tenido nos tenía prohibido desde el primer dia, decir que dos cosas se "igualan", lo que hace, es que "A toma como valor B", no viene a cuento, pero me ha traido recuerdos de los insultos que expendía por estas cosas  :xD)

Saludos!!
En línea

MazarD
Colaborador
***
Desconectado Desconectado

Mensajes: 884


mazard.info


Ver Perfil WWW
Re: Igualar Funciones
« Respuesta #8 en: 23 Enero 2010, 12:56 »

En un principio si nos explicas mejor el problema te ayudaremos mejor, de todos modos tomando literalmente lo que quieres se puede hacer algo parecido, como ya ha dicho R.N.A con punteros a funciones. Un ejemplo:

Código
  1. typedef string (*punteroFuncion)(void);
  2.  
  3. string funcionA(void) { return "soy la funcion a"; }
  4. string funcionB(void) { return "soy la funcion b"; }
  5.  
  6. int main()
  7. {
  8. punteroFuncion pf;
  9. pf=funcionA;
  10. cout << pf();
  11. pf=funcionB;
  12. cout << pf();
  13. return 0;
  14. }

Lo he escrito al vuelo asi que es posible que de algun error al compilar, esto se suele utilizar principalmente para callbacks.

« Última modificación: 23 Enero 2010, 13:08 por MazarD » En línea

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
http://twitter.com/MazarD
irc://irc.freenode.org/elhacker.net
Kropt32

Desconectado Desconectado

Mensajes: 34


Ver Perfil
Re: Igualar Funciones
« Respuesta #9 en: 24 Enero 2010, 23:57 »

En primer lugar siento no haber podido contestar antes...

Me imaginaría que una de las respuestas sería el tema de puntero a función, y sinceramente, yo hubiera contestado igual, no me he sabido explicar... De hecho, creo que ni me he explicado...

Me arriesgaría a decir que son una especie de delegados lo que busco...

A base de ejemplos creo que se me entenderá mejor...

En Visual Basic por ejemplo, o Visual C++ al hacer un doble click en un botón en el diseño del formulario pasa a la parte de código y automáticamente pone el cursor para escribir dentro de una función que ha creado Button1_Click() por ejemplo... Que maneja lo que ocurre al hacer clic en Button1

Pues básicamente lo que quería era hacer eso...

En la práctica:

Código:

class Clase
{
   public:
      Clase(){}

      void Metodo()
      {
         evento();
      }
      
      void evento()
      {
         cout << "Evento en clase" << endl;
      }
};


void eventoMain();

int main()
{
   Clase miClase;

   // Convertir de alguna forma la función evento() de la clase Clase
   // en eventoMain() para poder editar el codigo del evento sin tener que
   // crear una clase derivada...

   miClase.Metodo();

   return 0;
}

void eventoMain()
{
   cout << "Evento en main" << endl;
}


Y que la salida a ese programa sea:

Código:
Evento en main

Creo que esta vez se entiende un poco mejor...

Nada más, espero que podáis echarme una mano.
Muchas gracias.
« Última modificación: 24 Enero 2010, 23:59 por Kropt32 » En línea

En las pistolas, fíjense, a cada disparo el cañon recula, como asustado por lo que acaba de hacer.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Podrá Google+ igualar a Facebook?
Noticias
wolfbcn 3 1,063 Último mensaje 3 Agosto 2011, 18:27
por O-LLOS-O
Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines