Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.c++
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 01-05-2008, 23:25:02
R.G.A.M.
 
Mensajes: n/a
Predeterminado Crear clase dígito.

Me gustaría saber cómo puedo diseñar un objeto de la misma naturaleza
que la clase "int", salvo que sólo abarque los números del 0 al 9,
para poder trabajar únicamente con dígitos, sin derrochar memoria.

Desde ya, muchas gracias.
Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 02-05-2008, 15:16:26
Pascal J. Bourguignon
 
Mensajes: n/a
Predeterminado Re: Crear clase dígito.

"R.G.A.M." <rgam1989***yahoo.com.ar> writes:

> Me gustaría saber cómo puedo diseñar un objeto de la misma naturaleza
> que la clase "int", salvo que sólo abarque los números del 0 al 9,
> para poder trabajar únicamente con dígitos, sin derrochar memoria.
>
> Desde ya, muchas gracias.


Tipos enteros y objetos no son de la misma naturaleza en C++.
No se puede escribir: 42.print();


typedef unsigned char digit; // misma naturaleza

o bien:

class digit { // un objeto
protected: unsigned char value;
digit(unsigned char aValue):value(aValue){assert((0<=aValue)&(aValue<= 9));}
inline int getValue(void)const{return value;}
const digit& operator+(const digit& other){return(digit((value+other.getValue())%10)); }
// ...
};


--
__Pascal Bourguignon__
Responder Con Cita
  #3 (permalink)  
Antiguo 05-05-2008, 05:43:45
Zara
 
Mensajes: n/a
Predeterminado Re: Crear clase dígito.

On Thu, 1 May 2008 16:25:02 -0700 (PDT), "R.G.A.M."
<rgam1989***yahoo.com.ar> wrote:

>Me gustaría saber cómo puedo diseñar un objeto de la misma naturaleza
>que la clase "int", salvo que sólo abarque los números del 0 al 9,
>para poder trabajar únicamente con dígitos, sin derrochar memoria.
>



Podrías usar un enumerado:

enum digito {CERO,UNO,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE} ;

Eso garantiza que el compilador aplicará cuantas optimizaciones
considere necesarias en cuanto a tamaño del dato y tamaño del código
que crea necesarias, en función de la sopciones de compilación.


Pero recuerda: No se realiza en ningún monento la comprobación de
rango. Si quieres que el rango semantenga, puedes sobrecargar los
operadores, por ejemplo:

digito operator+(const digito primero, const digito segundo) {
int suma=static_cast<int>(primero)+static_cast<int>(se gundo);
return static_cast<diigto>(suma%10);
}

saludos,

Zara
Responder Con Cita
  #4 (permalink)  
Antiguo 05-05-2008, 18:43:59
R.G.A.M.
 
Mensajes: n/a
Predeterminado Re: Crear clase dígito.

On 5 mayo, 02:43, Zara <me_z...***dea.spamcon.org> wrote:
> On Thu, 1 May 2008 16:25:02 -0700 (PDT), "R.G.A.M."
>
> <rgam1...***yahoo.com.ar> wrote:
> >Me gustaría saber cómo puedo diseñar un objeto de la misma naturaleza
> >que la clase "int", salvo que sólo abarque los números del 0 al 9,
> >para poder trabajar únicamente con dígitos, sin derrochar memoria.

>
> Podrías usar un enumerado:
>
> enum digito {CERO,UNO,TRES,CUATRO,CINCO,SEIS,SIETE,OCHO,NUEVE} ;
>
> Eso garantiza que el compilador aplicará cuantas optimizaciones
> considere necesarias en cuanto a tamaño del dato y tamaño del código
> que crea necesarias, en función de la sopciones de compilación.
>
> Pero recuerda: No se realiza en ningún monento la comprobación de
> rango. Si quieres que el rango semantenga, puedes sobrecargar los
> operadores, por ejemplo:
>
> digito operator+(const digito primero, const digito segundo) {
> int suma=static_cast<int>(primero)+static_cast<int>(se gundo);
> return static_cast<diigto>(suma%10);
>
> }
>
> saludos,
>
> Zara


Muchas gracias por tu respuesta, Zara. La tuya me ayudó a aclarar la
duda que tenía.
Me veía tentado a usar algún enumerado, pero me temía que ocupara la
misma memoria que el entero, y simplemente asignara nombres a algunos
particulares.

Agradezco también la corrección de Pascal. Desde la próxima, tendré
más cuidado con los conceptos que menciono.
Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado






Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.