Pues la verdad es que no, cada compilador traduce tu código de una manera, pero una vez compilado siempre va actuar de la misma forma, solo tienes que asegurarte del compilador que uses tu.<br><br>De todas formas si, a parte del constructor, no creas ninguna otra función publica desde la cual puedas modificar el valor, para todo aquello que este fuera de la clase ese valor va a ser una constante, de todas formas tengo una duda que no recuerdo si se puede hacer o no y si alguien lo sabe te podría solucionar el problema, me explico:<br>
<br>Una constante le das el valor la primera vez que la declaras<br>const int aux = 1;<br>, mi pregunta cuando creas un constructor el valor que le das se puede almacenar de igual forma en la constante?, si esto es posible podrias realizar el calculo del algortimo aparte y ingresar el valor en el constructor.<br>
<br><div class="gmail_quote">El 10 de marzo de 2010 10:55, Carlos Falgueras García <span dir="ltr"><<a href="mailto:fark.zano@gmail.com">fark.zano@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Gracias por responder Jose!<br>
<br>
En principio este atributo sólo se modifica en el constructor de la<br>
clase, y por esto lo quiero declarar constante.<br>
Mi única duda es: ¿Puedo garantizar que el atributo se modifique use<br>
el compilador que use?<br>
<br>
En el curso se dice que en algunos compiladores (DevC++ en concreto),<br>
aún utilizando const_cast, la variable no se modifica. ¿Ocurre lo<br>
mismo con los atributos de una clase?<br>
<br>
El 10/03/10, Jose Cabrera <<a href="mailto:josmaca@gmail.com">josmaca@gmail.com</a>> escribió:<br>
<div><div></div><div class="h5">> El atributo esta dentro de una clase con lo cual únicamente se podrá<br>
> modificar desde dentro de esa clase, o con una clase amiga, si aun así<br>
> necesitas que sea constante, desde mi punto de vista ya esta muy protegido<br>
> por la clase, creo que el único método que te queda es el const_cast, y aun<br>
> así tendrías que hacerlo con una función publica.<br>
><br>
> El 9 de marzo de 2010 21:58, Carlos Falgueras García<br>
> <<a href="mailto:fark.zano@gmail.com">fark.zano@gmail.com</a>>escribió:<br>
><br>
>> ¡Hola a todos!<br>
>><br>
>> Escribo para pediros vuestra opinión sobre el uso de const_cast para<br>
>> cambiar el valor de una constante, en concreto un atributo constante de<br>
>> una<br>
>> clase cualquiera. Se que el valor de los atributos constantes de una clase<br>
>> debe pasarse en los inicializadores(no estoy seguro de que se llamen así<br>
>> :S) del constructor, pero en mi caso me resulta imposible pues el valor de<br>
>> estos lo calculo con un algoritmo complejo.<br>
>><br>
>> Os ilustro con un ejemplo sencillo:<br>
>><br>
>> class MiClase{<br>
>><br>
>> private:<br>
>><br>
>> const int atributo_constante;<br>
>><br>
>> public:<br>
>><br>
>> MiClase(int argumentos) : atributo_constante(0){<br>
>><br>
>> int* p = const_cast<int*>(&atributo_constante);<br>
>><br>
>><br>
>> //Complejo algoritmo<br>
>><br>
>> int aux=0;<br>
>><br>
>> aux += argumentos*2;<br>
>><br>
>> //Supuesto cambio de valor<br>
>> *p=aux;<br>
>><br>
>> }<br>
>><br>
>> };<br>
>><br>
>> He leído en el curso de<br>
</div></div>>> cconclase<<a href="http://c.conclase.net/curso/index.php?cap=042#CAS_const" target="_blank">http://c.conclase.net/curso/index.php?cap=042#CAS_const</a>>que esto<br>
<div class="im">>> puede no cambiar realmente el valor de la constante dependiendo del<br>
>> compilador. ¿Es esto siempre así, aún refiriéndonos a un atributo y no a<br>
>> una<br>
>> clase?<br>
</div>>> He comprobado que funciona como se espera en codepad <<a href="http://codepad.org" target="_blank">http://codepad.org</a>>,<br>
<div><div></div><div class="h5">>> aquí tenéis el link: <a href="http://codepad.org/aU9WAXYF" target="_blank">http://codepad.org/aU9WAXYF</a><br>
>><br>
>> Si la respuesta es que esto es desaconsejable, inútil o "deberías estar<br>
>> loco para hacer algo así" , os agradecería que me indicarais si existe<br>
>> alguna otra forma de hacer esta asignación;<br>
>><br>
>> P.D.: Por supuesto quiero obcecadamente que mi atributo sea constante XD<br>
>><br>
>> ¡Muchas gracias de antemano!<br>
>><br>
>> _______________________________________________<br>
>> Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
>> <a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
>> Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
>><br>
><br>
<br>
_______________________________________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net</a><br>
Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/index.php?gid=2&mnu=FAQ</a><br>
</div></div></blockquote></div><br>