[C con Clase] ¿const_cast aconsejable o no?

Carlos Falgueras García fark.zano en gmail.com
Mar Mar 9 21:58:57 CET 2010


¡Hola a todos!

Escribo para pediros vuestra opinión sobre el uso de const_cast para cambiar
el valor de una constante, en concreto un atributo constante de una clase
cualquiera. Se que el valor de los atributos constantes de una clase debe
pasarse en los inicializadores(no estoy seguro de que se llamen así :S) del
constructor, pero en mi caso me resulta imposible pues el valor de estos lo
calculo con un algoritmo complejo.

Os ilustro con un ejemplo sencillo:

class MiClase{

private:

const int atributo_constante;

public:

MiClase(int argumentos) : atributo_constante(0){

int* p = const_cast<int*>(&atributo_constante);


//Complejo algoritmo

int aux=0;

aux += argumentos*2;

//Supuesto cambio de valor
*p=aux;

}

};

He leído en el curso de
cconclase<http://c.conclase.net/curso/index.php?cap=042#CAS_const>que
esto puede no cambiar realmente el valor de la constante dependiendo
del
compilador. ¿Es esto siempre así, aún refiriéndonos a un atributo y no a una
clase?
He comprobado que funciona como se espera en codepad <http://codepad.org>,
aquí tenéis el link: http://codepad.org/aU9WAXYF

Si la respuesta es que esto es desaconsejable, inútil o "deberías estar loco
para hacer algo así" , os agradecería que me indicarais si existe alguna
otra forma de hacer esta asignación;

P.D.: Por supuesto quiero obcecadamente que mi atributo sea constante XD

¡Muchas gracias de antemano!
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20100309/be2d63ed/attachment.html>


Más información sobre la lista de distribución Cconclase