Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Clase & Estructura ¿diferencias?

Iniciado por J_F_NASH, 10 de Septiembre de 2005, 07:12:37 PM

« anterior - próximo »

J_F_NASH

 Un par de dudas:

1) ¿Cual es la diferencia mas notable entre "clases" y "estructuras"?. Estoy con VS2003 y en una "estructura" he llegado a hacer:
miembros privados, publicos, herencias y si no recuerdo mal, un constructor.

2) ¿Existe alguna forma de que una variable almacene cadenas y valores?. En ActionScrip se escribía algo como esto:
variable2 = 10;
variable1 = "número: " + variable2;

Salida:
numero: 10;


S2.

zupervaca

 en c++ la unica diferencia entre clases y estrucutras es que las clases tienen por defecto los miembros publicos y las clases privados, en c-sharp las estructuras son como los tipos de datos y las clases son objetos

saludos

_XUTI_H_

 Si lo que estás buscando es poder imprimir un numero en una cadena creo q t puedo ayudar (supongo que es eso lo que quieres, sino especificame que utilidad le quieres dar):


char cadena[100];
// Esto está reservando espacio para 100 carácteres, pero puedes reservar los q creas q vas a necesitar

int num; // Y esto es una variable entero, :P

num = 10; // Y todas las operaciones que quieras

sprintf(cadena, "Mi numero es: %d, mas o menos.\n", num);
// Ahora cadena contiene: Mi numero es: 10, mas o menos

printf(cadena);


Esto es C y la función sprintf te permite dar "formato" a tus strings de chars o cadenas de caracteres. Puedes buscar información sobre esta función en cualquier manual de C, pero te diré que %d es sustituido por el siguiente parámetro que le pases a la función (en representación de entero).

En C++ seria más fácil:


int num = 10;

cout << "Mi numero es: " << num << ", mas o menos" << endl;


El resultado con los dos códigos es el mismo. Creo, no lo he compilado ni nada, jeje :P

Salu2, espero que te haya servido de ayuda.
UTI

ethernet

Cita de: "J_F_NASH"
2) ¿Existe alguna forma de que una variable almacene cadenas y valores?. En ActionScrip se escribía algo como esto:
variable2 = 10;
variable1 = "número: " + variable2;

Salida:
numero: 10;

Quizás boost::any te sirva

http://www.boost.org/doc/html/any/

Grugnorr

 
Citaren c-sharp las estructuras son como los tipos de datos y las clases son objetos

:blink:

Qué tendrá que ver una struct con una metaclase?  (nooo)


En .NET una struct es una "clase ligera":

- Es Value Type
- Es sealed( no se puede heredar de ella ) ni puede heredar de otra clase( implícitamente de ValueType )
- Puede implementar interfaces

Resumo pegando del SDK:


CitarStructs Overview
Structs have the following properties:

Structs are value types while classes are reference types.


When passing a struct to a method, it is passed by value instead of as a reference.


Unlike classes, structs can be instantiated without using a new operator.


Structs can declare constructors, but they must take parameters.


A struct cannot inherit from another struct or class, and it cannot be the base of a class. All structs inherit directly from System.ValueType, which inherits from System.Object.


A struct can implement interfaces.


It is an error to initialize an instance field in a struct.

Así que en el 99.9% de los casos, no se suelen usar structs en .NET.  
hat the hells!

zupervaca

 me parece que no has usado ni estructuras ni directx managed en c-sharp, mirate un poco las directx y ya me diras si se usan estructuras o no

saludos

pd: eso que has pusto sobre las estructuras es aplicable a los tipos de datos :P  

Grugnorr

 
Citar
pd: eso que has pusto sobre las estructuras es aplicable a los tipos de datos

Citaren c-sharp las estructuras son como los tipos de datos y las clases son objetos

Uhm, uno de los 2 no habla el mismo idioma  :P , de qué hablas?  :blink:

Managed DX llo conozco muy poco, pero en "general" se suelen usar muy poco las structs, en el framework más allá de los Point, Size y pares de datos de menos de 32bits, no se suelen usar por motivos obvios.

hat the hells!

zupervaca

 pues eso, que no ser por que mencionas las metaclases debajo de un texto que he puesto yo si yo no he mencionado nada sobre metaclases

saludos

Grugnorr

 
Citaren c-sharp las estructuras son como los tipos de datos y las clases son objetos

No, has dicho algo incomprensible comparando estructuras y clases que tenía tufillo a comparar estructuras con metaclases.

hat the hells!

zupervaca

Cita de: "Grugnorr"
Citaren c-sharp las estructuras son como los tipos de datos y las clases son objetos

No, has dicho algo incomprensible comparando estructuras y clases que tenía tufillo a comparar estructuras con metaclases.
leete bien esa frase, que yo en ningun momento estoy comparando una estructura con una clase

Grugnorr

 Ok, tengo cosas mejores que hacer que intentar adivinar que pretendías decir con :

Citaren c++ la unica diferencia entre clases y estrucutras es que las clases tienen por defecto los miembros publicos y las clases privados, en c-sharp las estructuras son como los tipos de datos y las clases son objetos

total, yo lo tengo muy claro  :P  
hat the hells!

zupervaca

 pues muy claro, como no sabia si se referia a c++ o c-sharp que son los dos lenguajes en los que se seguro las diferencias entre estructuras y clases puse los dos

Citaren c++ la unica diferencia entre clases y estrucutras es que las clases tienen por defecto los miembros publicos y las clases privados

Citaren c-sharp las estructuras son como los tipos de datos y las clases son objetos

lo pongo separado en parrafos, tal vez se entienda mejor

saludos

Grugnorr

 Decididamente éste es un diálogo de besugos...

Citaren c-sharp las estructuras son como los tipos de datos y las clases son objetos

Esa es la frase que deberías explicar, castellano aún no se me ha olvidado  :D  
hat the hells!

sés

Cita de: "_XUTI_H_"
char cadena[100];
// Esto está reservando espacio para 100 carácteres, pero puedes reservar los q creas q vas a necesitar

int num; // Y esto es una variable entero, :P

num = 10; // Y todas las operaciones que quieras

sprintf(cadena, "Mi numero es: %d, mas o menos.\n", num);
// Ahora cadena contiene: Mi numero es: 10, mas o menos

printf(cadena);



En C++ seria más fácil:


int num = 10;

cout << "Mi numero es: " << num << ", mas o menos" << endl;
No es la primera vez que veo un listado enrevesado en C y luego un simpificado en C++

Versión C real:
int num = 10;
printf( "Mi numero es: %d, mas o menos\n", num );


No veo que sea más fácil en C++.
Soy indeciso... ¿o no?

J_F_NASH

 Me estoy liando bastante.
Lo que quiero hacer es que una variable pueda contener letras y numeros. O solo letras, pero que si yo le paso una variable que contiene un entero (el 10) me lo convierta en caracteres. No se, creo que lo he liado mas.

Y lo de si funcionan igual las clases y estructuras... pues no he entendido nada. No estoy con directX. Solo utilizo C++ y SDL en VS 2003.
Solo estoy empleando estructuras y hasta el momento he podido hacer con ellas todo lo que hacía con las clases (ver 1er mensaje que puse)



S2.






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.