Título: Forma segura de implementar tipo Naturales positivos Publicado por: HardForo en 23 Abril 2016, 03:45 am A sabiendas del problema de crear tipos unsigned int he intentado manejarlos en un programa simple pero que tenia como variables distancias, longitud de cadenas y otras magnitudes que se definen de forma positiva.
Código
Quisiera poder hacer algo parecido a lo anterior pero con una instancia de clase por ejemplo (pero no necesariamente) donde pueda hacer que el setter chequee si el valor es positivo y sino arroje una excepcion pero que internamente sea un entero y por tanto me habilite a: operaciones sin casting entre enteros y enteros-sin-signo (entre ellas las comparaciones) A groso modo...... muy grosero claro..... quiero implementar con algo de azucar sintactica esto: Código
Quisiera poder usarlo asi: Código
Si pudiera la solucion servirme para C y no solo C++ genial....... :P Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: crack81 en 23 Abril 2016, 06:35 am Bueno lo mas cercano a lo que tu quieres son las famosas propiedades "lenguajes" como Delphi desde hace mucho años las implementan, son variables de clase que simulan estar accediendo a un variable comun y corriente
ejemplo: Código
Visualmente parece una simple asignación pero internamente se estan ejecutando métodos escritura y lectura que validan el valor asignado, para muchos mejor que los famosos getters y setters clásicos pero es ya cuestión de gustos. Si no mal recuerdo c++ nativo no posee esto las únicas veces que lo he visto algo similar han sido en c++ builder de embarcadero y visual studio de microsoft. Te dejo unos links si te interesan. :silbar: Version visual studio :-[ https://msdn.microsoft.com/en-us/library/2f1ec0b1.aspx (https://msdn.microsoft.com/en-us/library/2f1ec0b1.aspx) Version c++ builder ;D http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4031/Implementing-a-Property-in-C.htm (http://www.codeguru.com/cpp/cpp/cpp_mfc/article.php/c4031/Implementing-a-Property-in-C.htm) Por ultimo dale una mirada a la biblioteca cstdint para implementar de manera mas comoda los enteros con y sin signo ejemplo: (https://i.gyazo.com/522def6e21a149eefec329e0ebb5cb97.png) link:http://www.cplusplus.com/reference/cstdint/ (http://www.cplusplus.com/reference/cstdint/) Si tienes dudas avisa Saludos... PD: Eso que quieres implementar de: Código
Es imposible ya que Natural por fuerza es el tipo de dato por ende no puedes declarar una variable llamada 5 o -3 la implementacion correcta a la que te refieres es esta: Código
y al momento de hacer la asignación valide los datos, similar a las propiedades que te mencione arriba. Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: HardForo en 23 Abril 2016, 13:02 pm Muchas gracias crack81, muy buena información ;D
Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: ivancea96 en 23 Abril 2016, 13:25 pm ¿Constructores y operadores?
Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: MAFUS en 23 Abril 2016, 14:03 pm Recuerda que los números naturales empiezan en el 1, sino son enteros.
Ups, vale, que existen las dos formas: la que incluye 0 en el conjunto de los naturales y la que no incluye el 0 en el conjunto de los naturales. No he dicho nada. :silbar: Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: HardForo en 23 Abril 2016, 14:48 pm ivancea96: podrás mostrarme alguna implementación de lo que busco ? realmente llevo pocos dias con C / C++ y no estoy ni cerca de poder lograr lo que necesito, gracias
Recuerda que los números naturales empiezan en el 1, sino son enteros. Ups, vale, que existen las dos formas: la que incluye 0 en el conjunto de los naturales y la que no incluye el 0 en el conjunto de los naturales. No he dicho nada. :silbar: Cierto, asi es..... :xD Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: ivancea96 en 23 Abril 2016, 15:17 pm Ejemplo usando tu clase.
Código
Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: HardForo en 23 Abril 2016, 18:33 pm Te agradezco el esfuerzo, sin embargo no se comporta como debería:
Código
5-670 no es +675 Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: ivancea96 en 23 Abril 2016, 22:59 pm De hecho, no llega a hacer el cout, porque tira excepción. No puedes asignarle un número negativo a un Natural. Mira el constructor.
Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: HardForo en 23 Abril 2016, 23:48 pm Te juro que me dio el resultado que te digo porque de hecho hasta lo pastié pero ahora volví a compilar y me dio std::out_of_range
Sin embargo, el requerimiento es poder hacer operaciones entre un "entero sin signo" (implementado como sea) y un entero. Asi como está.... no permite la operación y no me sirve. Título: Re: Forma segura de implementar tipo Naturales positivos Publicado por: ivancea96 en 24 Abril 2016, 00:07 am Sin duda, no iba a implementar todos los operadores. Impleméntalos si los necesitas. Haz operadores que acepten int, por ejemplo.
|