Hola,<br><br>He probado lo de mutable y obtengo este error:<br><br><b>error: assignment of data-member 'myOtherClass::m_ myOtherObject' in read-only structure</b><br><br>He establecido el método 'setMember()' como constante y e indicado que el miembro a modificar sea 
"mutable".<br><br>¿Por qué no lo permite si el atributo de la clase está declarado como mutable y el método es constante?<br><br>Saludos.<br><br><div class="gmail_quote">El 15 de mayo de 2012 12:01, User <span dir="ltr"><<a href="mailto:usuarioanonimomysql@gmail.com" target="_blank">usuarioanonimomysql@gmail.com</a>></span> escribió:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hola,<br><br>Es sólo para aprender el uso de const y para dominarlo bien. ¿Me podrías poner un ejemplo de eliminar la parte de 'const' temporalmente a través de 'const_cast'? Probaré lo de mutable.<br>
<br>Saludos.<br>
<br><div class="gmail_quote">El 15 de mayo de 2012 03:15, Steven Davidson <span dir="ltr"><<a href="mailto:srd4121@njit.edu" target="_blank">srd4121@njit.edu</a>></span> escribió:<div><div class="h5"><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

Hola User,<div><br>
<br>
On 5/14/2012 7:28 PM, User wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hola,<br>
<br>
En efecto, 'other' es constante, no lo he puesto anres, pero es un<br>
parámetro constante del método 'myClass::doSomething()', El<br>
prototipo, por tanto, quedaría así: void myClass::doSomething(const<br>
myObjectType &myObject, const myOtherClass* other) const.<br>
<br>
La solución que propones me funciona, pero ¿se podrá hacer constante<br>
al método 'setMember()' y dejar constante al parámetro 'other'? Lo<br>
que quiero hacer en 'setMember()' es asignar el valor de<br>
'myObject.getMember()' a un miembro de la clase myOtherClass.<br>
<br>
</blockquote>
<br></div>
Como he dicho antes, no tiene sentido que invoques 'setMember()', la cual por su nombre significa que vas a modificar un miembro de "este objeto", con un objeto constante. Es como intentar hacer esto:<br>


<br>
const int num = 10;<br>
<br>
num = 5;<br>
<br>
Aparte de ser semánticamente incorrecto, también es una operación ilógica. Por eso te menciono que revises el diseño de lo que quieres hacer. Personalmente, si vas a modificar un objeto que es constante, entonces significa que no tienes las ideas claras.<br>


<br>
Ahora bien, hay otra forma de saltarse toda esta lógica, que es eliminando la parte de 'const' temporalmente a través de 'const_cast'. La otra solución es la de establecer que 'setMember()' sea constante - cosa que estoy MUY en contra porque no tiene sentido alguno - pero indicar que ese miembro a modificar sea "mutable". Por ejemplo,<br>


<br>
class myOtherClass<br>
{<br>
  mutable int miembro;<br>
  ...<br>
};<br>
<br>
<br>
Reitero que debes pensar MUY bien lo que quieres hacer, ya que si 'other' es constante, no tiene sentido modificarlo, y si se debe modificar, entonces no debería ser constante.<br>
<br>
<br>
Espero que esto te oriente un poco.<div><div><br>
<br>
Steven<br>
<br>
<br>
______________________________<u></u>_________________<br>
Lista de correo Cconclase <a href="mailto:Cconclase@listas.conclase.net" target="_blank">Cconclase@listas.conclase.net</a><br>
<a href="http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net" target="_blank">http://listas.conclase.net/<u></u>mailman/listinfo/cconclase_<u></u>listas.conclase.net</a><span onmouseout="cancel = false; window.setTimeout(WRCHideContent, 1000); clearTimeout(showTimer);" onmouseover=" var self = this; showTimer = window.setTimeout(function(){WRCShowContent({'rating':{'value':-1,'weight':-1},'flags':{},'single':false,'ttl':7200,'expireTime':'20120515194601'}, self.className)},600);" class="wrc0" style="padding-right:16px;width:16px;height:16px"></span><span style="padding-right:16px;width:16px;min-height:16px"></span><br>


Bajas: <a href="http://listas.conclase.net/index.php?gid=2&mnu=FAQ" target="_blank">http://listas.conclase.net/<u></u>index.php?gid=2&mnu=FAQ</a><span onmouseout="cancel = false; window.setTimeout(WRCHideContent, 1000); clearTimeout(showTimer);" onmouseover=" var self = this; showTimer = window.setTimeout(function(){WRCShowContent({'rating':{'value':-1,'weight':-1},'flags':{},'single':false,'ttl':7200,'expireTime':'20120515194601'}, self.className)},600);" class="wrc0" style="padding-right:16px;width:16px;height:16px"></span><span style="padding-right:16px;width:16px;min-height:16px"></span><br>


</div></div></blockquote></div></div></div><br>
</blockquote></div><br>