[C con Clase] Constructor copia

Yolmer Rosales yolmer.rosales en gmail.com
Lun Jul 11 04:09:38 CEST 2016


gracias con eso resolví  y aclaré la duda, ya había intentado ponerle const
a la función pero no supe donde lo había hecho así
const( const char *getcadena())
y luego
const char * const getcadena
nunca pensé ponerlo al final


... ahora sólo espero recordarlo para el futuro.

El 10 de julio de 2016, 21:24, Davidson, Steven <srd4121 en njit.edu> escribió:

> Hola Yolmer,
>
> El error está en el uso del parámetro. Según el mensaje dado, estás usando
> una función miembro que no es constante para un objeto que definiste que sí
> es constante. Por ejemplo, escribiste algo así,
>
> class UnaClase
> {
> private:
>   char szCadena[100];
>
> public:
>   const char * Getcadena();
>   ...
> };
>
> UnaClase::UnaClase( const UnaClase &ref )
> {
>   const char *psz = ref.Getcadena();  // Error: 'UnaClase::Getcadena()' no
> es constante
> }
>
> Debes usar solamente funciones (miembro) constantes con objetos
> constantes. Por ejemplo,
>
> class UnaClase
> {
> private:
>   char szCadena[100];
>
> public:
>   // Esta función es segura para ser llamada con objetos constantes
>   const char * Getcadena() const;
>   ...
> };
>
> UnaClase::UnaClase( const UnaClase &ref )
> {
>   // Correcto: objeto constante invoca función constante
>   const char *psz = ref.Getcadena();
> }
>
> También ten presente que al adentrarte en el ámbito de la clase,
> 'UnaClase', el parámetro, 'ref', tiene acceso directo a sus miembros. Por
> ejemplo,
>
> UnaClase::UnaClase( const UnaClase &ref )
> {
>   // Acceso directo a sus miembros correspondientes
>   strcpy( szCadena, ref.szCadena );
> }
>
>
> Espero que esto aclare las dudas.
>
> Steven
>
>
> 2016-07-10 18:57 GMT-04:00 Yolmer Rosales <yolmer.rosales en gmail.com>:
>
>> Hola lista me he topado con algo un poco extraño
>>
>> según la teoría un constructor copia como el que quiero hacer debe
>> pasarse una referencia constante algo así
>>
>> UnaClase::UnaClase(const UnaClase&)
>> {
>>       Código del constructor;
>> }
>>
>>
>> pero este constructor sólo me funcionó bien quitando el "const"
>>
>> de resto da el siguiente error
>>
>> error: passing 'const A' as 'this' argument of 'const char*
>> A::Getcadena()' discards qualifiers [-fpermissive]|
>>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20160710/ca044988/attachment.html>


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