Título: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: XorNet en 4 Octubre 2013, 06:54 am Hola bueno es que me puse a revisar un código fuente y pues me tope con unas lineas así:
Código
No entiendo por el simple echo de que son funciones con operador flecha apuntando hacia otra función o otra variable, o sea no sé si me explique, si alguien me puede poner un ejemplo fácil de comprender y una explicación, porque la verdad estoy muy ansioso por aprender esto los he visto en casi todo el código y pues *Emoción* xD Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: eferion en 4 Octubre 2013, 08:25 am A ver, tu tienes una estructura o clase cualquiera:
Código
Y por otro lado tienes una función que devuelve un puntero a una estructura de este tipo: Código
Si quieres acceder a algún miembro de la estructura, dado que es puntero tienes que utilizar el operador '->'. Si devolviese la estructura por valor en vez de por referencia tendrías que utilizar el operador '.' para acceder a los miembros de la estructura. Si, en concreto, quieres acceder al puntero a función almacenado en la estructura, dicho acceso puede escribirse así: Código
Pero vamos, que antes de correr tanto ponte a aprender la base, que estas cosas ya irán llegando solas. Un saludo. Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: XorNet en 4 Octubre 2013, 15:52 pm A ver, tu tienes una estructura o clase cualquiera: Código
Y por otro lado tienes una función que devuelve un puntero a una estructura de este tipo: Código
Si quieres acceder a algún miembro de la estructura, dado que es puntero tienes que utilizar el operador '->'. Si devolviese la estructura por valor en vez de por referencia tendrías que utilizar el operador '.' para acceder a los miembros de la estructura. Si, en concreto, quieres acceder al puntero a función almacenado en la estructura, dicho acceso puede escribirse así: Código
Pero vamos, que antes de correr tanto ponte a aprender la base, que estas cosas ya irán llegando solas. Un saludo. Oye y este método cómo se llama? O sea que nombre se le da a este tipo de instrucciones, me explico a las funciones así: Código Se les denomina Funciones Variadicas, entonces cómo se le denomina a esto que trato de entender? Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: rir3760 en 4 Octubre 2013, 16:10 pm cómo se le denomina a esto que trato de entender? Es solo una función que retorna un puntero, no tiene un nombre especial.Un saludo Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: ivancea96 en 4 Octubre 2013, 16:15 pm Sencillamente, si tienes un objeto de una clase en u variable, lo llamas con "clase.funcion/variable". Si el estás tratando con un puntero a esa clase, es con "clase->funcion/variable".
Por cierto, Se les denomina Funciones Variadicas Función Variadica? De donde sacaste eso?En mi vida lo oí xD Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: rir3760 en 4 Octubre 2013, 16:34 pm Por cierto,Función Variadica? De donde sacaste eso? Son las funciones que reciben un numero variable de argumentos, por ejemplo printf o scanf. Mas información en la pagina (cortesía de Wikipedia) Variadic function (http://en.wikipedia.org/wiki/Variadic_function).En mi vida lo oí Un saludo Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: ivancea96 en 4 Octubre 2013, 16:48 pm Ah, al ponerle la 'a' no me fijé xD
Nunca usé esa librería la verdad. Prefiero usar sobrecarga. Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: XorNet en 4 Octubre 2013, 19:55 pm Bueno hasta ahora he tratado de entender pero pues no lo he logrado xd, cuando trato de compilar esto:
Código Pero me da error, alguien me dice porque? Es obvio que lo estoy haciendo super mal pero por eso pongo el código para saber porque y me orienten. Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: eferion en 4 Octubre 2013, 20:12 pm Código
Esta línea está mal. Los objetos se pueden crear, bien de forma estática: Código
Bien de forma dinámica: Código
Pero lo que tu has puesto es una forma híbrida que no funciona. Por cierto, si creas un objeto con new... recuerda que has de poner un delete cuando dejes de usarlo... si no vas a dejar tu programa plagado de lagunas de memoria. Código
Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: ivancea96 en 4 Octubre 2013, 20:16 pm 2 cosas:
1) Código Eso solo era un puntero. Tienes que asignarle una variable. (new ...) 2) Pusiste "pPrueba()->saludo(); La variable no tiene paréntesis. Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: XorNet en 5 Octubre 2013, 00:04 am xd Creo que no me supe explicar, cuando tenemos:
Código
Porqué ZGetGame() Tiene paréntesis? Qué es lo que los hace tener? Sí es un objeto puntero de una clase bastaría con: ZGetGame->ZMyCharacter(); Y así el objeto llama a la función ZMyCharacter(), Pero porqué ZGetGame tiene paréntesis? Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: ivancea96 en 5 Octubre 2013, 00:27 am Eso es que ZGetGame() es una función que retorna un objeto. ZMyCharacter() es una función del objeto retornado.
Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: XorNet en 5 Octubre 2013, 01:04 am Eso es que ZGetGame() es una función que retorna un objeto. ZMyCharacter() es una función del objeto retornado. Heheheh al fin lo entendí. xP O sea que el código correcto al que coloqué anteriormente es este: Código
Al fin lo entiendo sé que no es la gran cosa pero me servirá. (: Título: Re: Alguien me ayuda con esta duda? Funciones & Punteros. Publicado por: rir3760 en 5 Octubre 2013, 02:22 am En esta función:
Código Estas retornando la dirección de una variable local, no es valido ya que todas las variables locales se destruyen al finalizar la función. Para que compile sin problemas puedes calificar la variable "ejemplo1" con static, de esa forma la variable existe durante toda la duración del programa: Código
Con todo el ejemplo solo tiene caso (sentido) para practicar el uso de funciones y sus valores de retorno. Un saludo |