Programación General > C/C++

 sobrecarga del operador - (hacerla const)

<< < (2/2)

r0d:
Ok ok, me equivoque. Pero hay algo que no entiendo, es la funcion pP:


--- Código: C++ ---void HugeInt::pP( short arr[], const int pos ) //pP (pedirPrestado), deberia ser const{    for( int i = pos - 1; i >= 0; i-- )//for1    {        if( arr[ i ] > 0 )        {            --arr[ i ];            while( arr[ ++i ] == 0 && ( i != pos ) )                arr[ i ] = 9;             arr[ pos ] += 10;            break;        }    }}// end pP (pedirPrestado) function 
Me dices que:

--- Cita de: "lann" ---pP modifica arr asi que no puede ser const, HugeInt operator-( const HugeInt & ) llama a pP asi que  HugeInt operator-( const HugeInt & ) no puede ser const, ahorita tratare de hayar una solucion sin modificar valores que tengo masomenos la idea.
--- Fin de la cita ---
pP modificar arr, es verdad, pero arr es pasado por parametro, no es miembro de HugeInt. Entonces no entiendo porque pP no puede ser const.

lann:
linea 10, modifico integer, r0d arr solo es el nombre del argumento de la funcion

--- Código: C++ ---             pP( integer, i ); 

r0d:
Vale, pues es lo que dicia desde el principio: el problema es en el operador -, no en la funccion pP.
Solo hay tres posibilidades:
1. declarar la variable miembra integer como mutable, pero eso es mas feo que la hostia.
2. hacer una copia de integer en una variable temporal para enviar a pP()
3. salir el operador - de la clase, como he propuesto en mi secundo mensage. Esto es, de largo, la mejor solucion.

lann:
El problema en mi implementacion es que ninguna de las 2 funciones es const(de hecho el problema si es en las 2 funciones, en pP y en operator-), si una fuera const entonces tambien la otra lo seria, mi humilde opinion sin ofender es que la mejor posibilidad y no esta en las que indicas es rehacer la implementacion de operator- para que no use funciones de utileria (pP) y no modifique sus argumentos. Y r0d pP no es const y no la puedo hacer const si esta modificando su arreglo, asi que pP no podra ser llamada por objetos const no importa que operator- la implemente como una funcion global amiga de la clase HugeInt.

Navegación

[0] Índice de Mensajes

[*] Página Anterior

Ir a la versión completa