Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Types en C++

Iniciado por Mr. Sandman, 20 de Septiembre de 2007, 05:41:46 PM

« anterior - próximo »

Mr. Sandman

Bueno, estoy ahora trasteando un poco con C++, pues la verdad es que siempre quise aprender, aunque me defiendo bien con otros lenguajes. Pues nada, la cuestión es que últimamente siempre programo en Blitz3D, y veo que hay muchas similitudes entre uno y otro (aunque la sintaxis de C++ me tira patrás aún  :lol: ) y la pregunta es que no veo claro el equivalente de las types (tan usadas y útiles en blitz3D) en C++. Són classes, estructuras? los dichosos punteros? si alguno que conozca los dos tiene la solución y ya de paso me destripa un poquito éstas diferencias pues mejor, gracias de antemano  :wink:

fjfnaranjo

Pues si, te puedo hechar una mano.

En Blizt la estructura Type realmente actua como una "lista enlazada". Busca eso en google y tendras todas las respuestas al alcance :)

Con una lista enlazada puedes encadenar lo que tu quieras: clases, estructuras, etc. Simplemente estudiate lo que es una lista enlazada y aprende mas profundamente OOP y no te sera dificil el salto (yo lo di).


Perdon por no usar acentos, escribo desde Toronto y aqui como que no hay ...
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)

[EX3]

Con posibilidad de equivocarme, los Types de Blitz3D al igual que de Visual Basic 6 y otros Basic tradicionales en C y C++ equivaldrian a un Struct, ya que en Blitz3D, VB 6.0 y Basic tradicional no existen clases, por lo que una estructura o tipo definido "Type" solo podria contener variables y arrays, que segun recuerdo es lo que permite definir Struct.

Si no me equivoco:

struct MiTipo
{
   int ValorA;
   float ValorB;
   char ValorC;
}

MiTipo miVariable;

Corregirme si me equivoco, lo poco que toque C++ lo tengo guardado en lo mas profundo de mi memoria :P

Salu2...

Edito: Me autocorrijo :P, segun veo aqui que Struct permite en C++ y C# definir clases (solo C++) asi como eventos y mas cosas... nunca se acuesta uno sin aprender algo nuevo je :)
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Mr. Sandman

Gracias a los dos, me informaré un poco más sobre eso, ya estoy viendo por dónde van los tiros, aunque me está costando un poco establecer semejanzas. Sobretodo la sintaxis es algo que me tiene frito, es cómo volver a aprender  :lol:

[EX3]

Despues de probar una sintaxis como la de C++ (en mi caso la de C#) te sentiras mas raro cuando intentes volver al Basic de Blitz3D o Visual Basic 6.0, creeme :lol:

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Mr. Sandman

No se, de algún modo creo que la sintaxis te puede dificultar bastante las cosas, ya veremos  :wink:

Mr. Sandman

He encontrado ésto:

http://www.fredosaurus.com/notes-cpp/structs/structs.html

Parece ser lo que yo buscaba, o sea que los structs (que también los llama classes )de C++ són cómo las types del Blitz3D no? (Decidme que sí  :lol: )

PD: Ya veo que las classes són lo mismo y que substituyeron a los structs, ya le voy pillando  :P

Pogacha

No se nada de Blitridi, pero las estructuras o clases sirven para crear un tipo de dato el cual sirva para abstraer un problema mediante el paradigma de la programación orientada o objectos.

struct Fuego {
 float calor, intensidad, ... ;
};

struct Comburente {
 float densidad, volumen, ...;
};

struct Combustible {
   float densidad, volumen, ...;
};

Fuego operator+(const Combustible &c, const Comburente & o)
{
 Fuego f;
 f.calor = c.densidad * c.volumen + ...
 f.intensidad = ..
 return f;
}

esto me permitiria pensar en sumar comburente mas combustible para obtener el resultado en fuego ... lo cual es practico para interpretar los problemas y pensar logicamente en su resolución.

Sobre struct y class, la diferencia (creo que la unica) es que una struct tiene un default to public y class tienen un default to private.
o sea:

struct {
 private:
   ...
};  

Es lo mismo que
class {
...
};

y

struct {
   ...
};  

Es lo mismo que

class {
public:
...
};

Saludos

bnl

En .Net la diferencia entre estructuras y clases es que las primeras son un tipo por valor y las segundas por referencia. Se comportan de forma diferente.

¿En C++ sucede igual?
Mi web: http://www.brausoft.com/
No sabían que era imposible, así que lo hicieron.

Pogacha


Mr. Sandman

Gracias gente, ya me quedó claro y me va bien, porque ya veo que las classes són lo mismo que mis queridas types de blitz  :D

sefivy

la diferencia real de una class y una struct en c++ es que mientras una permite solo atributos
ej:


struct fuego {
int calor;
int intensidad;
int chispa;
}

la otra permitiria tambien funciones

class mechero {
int calor;
int intensidad
int chispa
int encender(){
int fuego;
calor+intensidad+chispa=fuego;
return fuego;
}
}
no se si me e esplicao  :lol:

Pogacha

No, eso no es así.

Las structs también permiten funciones miembros.

Saludos

ToTeX

en c++ me parece que la diferencia es sólo una cuestión de visibilidad por defecto. Creo que los miembros de una estructura son por defecto públicos, y los de una clase privados.

fjfnaranjo

CitarParece ser lo que yo buscaba, o sea que los structs (que también los llama classes )de C++ són cómo las types del Blitz3D no? (Decidme que sí  )

No...

... y mira que le estas dando vueltas.

Los Types en Blizt serian en C++ estructuras puras y duras, no clases.

Ahora bien, en Blizt, puedes usar instrucciones especificas para recorrer todas las instancias de un dato Type (por ejemplo, para recorrer todas las particulas del juego y actualizar su estado) y esa capacidad (la de recorrer la lista) se implementa en C++ con una 'lista enlazada'.

En serio, olvidate por ahora de los Types, estudia OOP a fondo. No trates de ver que puedes escribir en C++ para hacer lo mismo que haces en Blizt, porque en C++ el planteamiento es distinto (porque dispone de clases, una herramienta mucho mas potente que las estructuras para gestionar entidades). Ya te dije que cuando estudiases OOP empezarias a vislumbrar por logica como usar las clases en el desarrollo de videojuegos.

Un saludo.
fjfnaranjo.com - Creating entertainment - Creando entretenimiento
fjfnaranjo [4t] gm4il [d0t] c0m (mail y msn)






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.