STRUCT vs TYPE, diferencias

Started by Abram, April 15, 2011, 08:42:22 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Abram

Buenas, poco a poco me voy soltando con el lenguaje, y aunque conozco el funcionamiento de ambos datos, me gustaria saber en que casos podrian ser utiles, es decir, si por ejemplo tengo 10 enemigos que comparten ciertas caracteristicas (vida, disparo, color, etc...) es mejor tenerlos en un struct o crear un type?

osk

Depende. Si lo vas a usar mucho, supongo que es mejor que definas un nuevo tipo de datos, y eso se hace con Type.
En mi manualillo lo explico un poco.

Abram

Sip de tu manual me viene la duda xD que no me ha quedado claro en que casos se deben usar una u otra, es decir, en el ejemplo anterior, si quisiera definir X enemigos que comparten ciertas variables, como lo deberia hacer? gracias osk! ^^

Danielo515

yo creo que a nivel de performance no se va a notar nada,pero tu si que lo vas a notar a la hora de programar mas fácilmente.  Es mucho mas sencillo pasar por parámetros y trabajar con un tipo de.dato que con una estructura. El código queda mas limpio y legible. Es la única diferencia que se me ocurre

Rein (K´)ah Al-Ghul

concuerdo con Danielo515, los typedef son mas comodos de usar, ya que se tratan como una variable mas. con todos sus beneficios
(intenta copiar una estructura en otra similar :P )

Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

Abram

Ya, supongo que es por tener el codigo mas ordenado, pero no se, me cuesta usarlos xDD... es que claro, si por ejemplo en un juego de naves, pongo 5 naves, seria absurdo poner velocidad1=x; velocidad2=y; etc... seria un caos, pero no se... sera que no me acostumbro a usar los types, que no sabria como plasmarlo en codigo (hacer el type se hacerlo xD me refiero a usarlo luego en el juego).

Rein (K´)ah Al-Ghul

luego se usa como una variable normal

Global
typedef puntos
int puntuacion;
string nombre;
end

puntos jugador1;
puntos jugador2;
//...

jugador1.nombre = "Abram";
jugador1.puntuacion = 1500;
jugador2 = jugador1;
jugador2.nombre = "Abram 2";
jugador2.puntuacion += 500;

Rein (K´)ah Al-Ghul
Infected with the Krieger strain of the Human-MetaHuman Vampiric Virus.

en vez de darme Karma positivo, denme (K´)arma negativ

SplinterGU

en realidad no es que uno sea mas comodo que otro o mas sencillo, o nada, segun la circunstancia es conveniente uno u otro.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Abram

Muchas gracias a ambos ^^ por ejemplo el funcionamiento de type lo tengo mas o menos claro, si quisieramos crear colores con sus diferentes componentes RGB podriamos hacer un:

type color
byte r;
byte g;
byte b;
end

Y luego solo habria que crear variables respecto a ese type como color azul; etc... vale, es una forma cojonuda de agrupar muchas variables que comparten ciertas caracteristicas, entonces el struct que utilidad tiene frente a type? Gracias!

SplinterGU

en ese caso, ese type color es correcto, porque supongo que se usara en muchos puntos del programa con varias variables del mismo tipo, pero hay casos donde solo necesitamos 1 de estas variables con un formato especial en todo el programa (globales o privadas) y en ese caso conviene mas usar un struct.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Abram

Vale, capto la idea, si voy a usar esa estructura de datos repetidas veces mejor hacerla type, si por ejemplo quiero que al guardar una partida se guarden ciertos datos mejor meterlos en un struct, no? intentare programar con types para coger soltura, gracias!

SplinterGU

claro, por ejemplo, tengo una estructura global de configuracion, entonces conviene usar struct...


struct config
    int players;
    int sound_enable;
    string player1_name;
    string player2_name;
end


por ejemplo, ahi conviene usar struct no tiene sentido hacer un type para luego definir una variable que solo definire 1 de ese tipo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Abram

Muchas gracias maestro, me ha quedado clarisimo ^^ ambos sirven para "agrupar" datos que tienen cosas en comun, struct lo hace un numero limitado de veces, y con type la podemos inicializar las veces que queramos (para algo es un tipo de dato mas), muchas gracias! karma++

SplinterGU

ummm... no tan asi...

type es un tipo de dato nuevo, y permite que luego podamos definir variables de ese tipo.
struct es una variable en si.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2