Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: J_F_NASH en 27 de Marzo de 2007, 01:40:22 PM

Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: J_F_NASH en 27 de Marzo de 2007, 01:40:22 PM
Tengo una función a la que quiero pasarle un tipo de dato que es una estructura. ¿Qué formas hay de hacerlo?

S2.
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: ethernet en 27 de Marzo de 2007, 02:58:12 PM
Como pone en cualquier tutorial de C/C++, ni más ni menos.
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: 1cacalvo en 27 de Marzo de 2007, 03:18:11 PM
Pues si no me equivoco como otro cualquier tipo de dato...

void func (const StructA sta); Constante
void func (const StructA& sta); Referencia constante
void func (StructA& sta); Referencia
void func (StructA sta); Valor

Si me equivoco ke me corrijan...
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: J_F_NASH en 27 de Marzo de 2007, 04:21:28 PM
Cita de: 1cacalvoPues si no me equivoco como otro cualquier tipo de dato...

void func (const StructA sta); Constante
void func (const StructA& sta); Referencia constante
void func (StructA& sta); Referencia
void func (StructA sta); Valor

Si me equivoco ke me corrijan...


Bueno, gracias por la respuesta. El tema es que he estado buscando por la red como hacerlo y lo unico que me encuentro es empleando "typedef" pero quería saber si puede hacerse directamente sin crear un tipo de dato.

¿Podrías explicar que es cada cosa en:
Citarvoid func (StructA sta); Valor



S2.
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: sés en 27 de Marzo de 2007, 04:35:26 PM
void func ( StructA *sta );  // ^.^ puntero
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: J_F_NASH en 27 de Marzo de 2007, 04:46:16 PM
Cita de: sésvoid func ( StructA *sta );  // ^.^ puntero

Gracias por el "detalle" AHORA lo entiendo.



S2.
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: 1cacalvo en 27 de Marzo de 2007, 04:57:09 PM
Pues haber si no me equivoco...

Constante:
  void func (const StructA sta);
  Le pasa una copia de la structura a la que no podemos cambiarle el valor

Referencia Constante:
  void func (const StructA& sta);
  Recibe la misma estructura pero no podemos cambiarle de valor

Referencia:
  void func (StructA& sta);
  Recibe una referencia a la misma estructura y cuando salga conservara los cambios en los valores.

Valor:
  void func (StructA sta);
  Recibe una copia de la estructura que cuando salgamos de la función se destruira perdiendo los cambios.

Puntero
  void func (StructA* sta);
  Recibe un puntero a dicha estructura. Ojo si hacemos un delete, o perdemos la referencia del puntero, se nos puede dar memory leaks.

 
Si hay algo mal explicado o algun concepto malo rectifiquenme :D
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: J_F_NASH en 27 de Marzo de 2007, 06:49:50 PM
Ya que estoy y por no habrir otro hilo:
¿Cómo puedo declarar e inicializar varias variables en una misma línea?. Recuerdo haber visto esto en algún sitio.

S2.
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: Vicente en 27 de Marzo de 2007, 07:09:56 PM
Comprate un libro de programación básica o leete tutoriales de iniciación. Te hará mucho bien.

Un saludo,

Vicente
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: Warchief en 27 de Marzo de 2007, 08:13:50 PM
¿No faltan puntero constante y puntero a estructura constante? ¿Y a void*? ¿Y a template (y todas sus variantes const)? ¿Y a padre si la estructura tiene herencia (y todas las variantes const a padre)?  :shock: Vale, mañana menos café.
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: Fanakito en 27 de Marzo de 2007, 10:23:50 PM
¿Pero quieres pasarle, empleando terminología de orientación a objetos, la "instancia" de la estructura o la propia definición de la estructura?

Me explico:

Si tienes
struct TPoint
{
     int x;
     int y;

     TPoint(int aX, int aY) : x(aX), y(aY) {}
};
TPoint p(1,2);


¿Lo que tu quieres es pasar p, que es el punto (1,2) o la definición de la estructura TPoint?
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: Warchief en 27 de Marzo de 2007, 11:18:03 PM
@Fan*
Eso no era a mi comentario, ¿no? Lo digo porque era un claro offtopic total. Supongo que el  :shock: debería ser un  8)  o un  :roll:
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: Fanakito en 28 de Marzo de 2007, 08:22:50 AM
Cita de: Warchief@Fan*
Eso no era a mi comentario, ¿no? Lo digo porque era un claro offtopic total. Supongo que el  :shock: debería ser un  8)  o un  :roll:

Era a la pregunta... es que todos habéis respondido a la "obvia", pero la formulación no me parece tan clara como para pensar que es la pregunta típica de tutorial (que igual si...)
Título: ¿Formas de pasar a una función un tipo de dato struct? C++
Publicado por: sés en 28 de Marzo de 2007, 09:09:03 AM
Cita de: J_F_NASH
Cita de: sésvoid func ( StructA *sta );  // ^.^ puntero

Gracias por el "detalle" AHORA lo entiendo.

:shock: ¿Que "detalle"? Sólo era una forma más de pasar una estructura a una función.