Reglamento general de los foros   •   FAQ   •   Buscar en el foro •  Registrarse | Iniciar sesión 



Portada » Foros Linux » Desarrollo » Programación


Nuevo tema Responder al tema
 [ 5 mensajes ] 
Patrocinadores

Autor
Buscar:
Mensaje

Desconectado
Forista Nuevo
Forista Nuevo

Registrado: Lun Oct 25, 2010 9:19 pm
Mensajes: 6

Nota Publicado: Dom Ene 09, 2011 12:19 pm 
Arriba  
Buenos dias, tengo un problema en un programa, que me dice que la conversion esta obsoleta, les dejo un trozo de codigo aver si me pueden ayudar. muchas gracias

Este es el constructor por el qual le paso los parametros
sabata::sabata(char *reff, char *marcaa, char *colorr, char *modell)
{
ref = new char[40];
strcpy(ref,reff);
marca = new char[40];
strcpy(marca,marcaa);
color = new char[40];
strcpy(color,colorr);
model = new char[40];
strcpy(model,modell);
}
i este es mi programa principal donde llamo al contructor
sabata s2("t46t","Kelmo","blanc","guay");

error

main.cpp:13: warning: deprecated conversion from string constant to ‘char*’
main.cpp:13: warning: deprecated conversion from string constant to ‘char*’
main.cpp:13: warning: deprecated conversion from string constant to ‘char*’
main.cpp:13: warning: deprecated conversion from string constant to ‘char*’

Alguien sabe si es que me falta algun paquete que instalar o que es?¿

Gracias

 Perfil  

Desconectado
Forista Mayor
Forista Mayor

Registrado: Sab Ago 25, 2007 7:00 am
Mensajes: 798
Ubicación: Galicia - España

Nota Publicado: Dom Ene 09, 2011 1:03 pm 
Arriba  

_________________
Mi blog: Conocimiento Abierto

 Perfil WWW  

Desconectado
Moderador
Moderador
Avatar de Usuario

Registrado: Mié Nov 28, 2007 8:00 am
Mensajes: 1457
Ubicación: En la X del explorer (pulse para llamar)

Nota Publicado: Dom Ene 09, 2011 3:18 pm 
Arriba  
En principio no tienes que instalar ningún paquete por ese "error". Tan sólo es un warning que deberías intentar quitar, aunque no es estrictamente necesario. El programa te debería funcionar igual.
El mensaje lo que te dice es que esa conversión (implícita) que estás haciendo no está aconsejada. No soy un experto de c++, y por tanto no sé decirte la razón.

En el enlace que te ha dejado fpuga, básicamente lo que te dice es que cambies el tipo de parámetro en la declaración de la función, de "char *p" a "const char *p". De esa forma ya no te debería mostrar el warning.

_________________
Descargue el gestor de mp3 "Music Manager" -> (mmlf)
Última versión del gestor "Music Manager" -> (jmmm)

 Perfil  

Desconectado
Forista Legendario
Forista Legendario
Avatar de Usuario

Registrado: Vie Abr 27, 2007 7:00 am
Mensajes: 1905

Nota Publicado: Dom Ene 09, 2011 9:57 pm 
Arriba  
Lo que te esta indicando es que esta desaconsejado el uso de char * como sinónimo de string, tienen formas similares pero trabajan de manera diferente.
En C++ existe el tipo string(mira acá), así que podrías reemplazar char * o unsigned char * por string, así:

Código:
sabata::sabata(string reff, string marcaa, string colorr, string modell)
{
   ref = new char[40];
   strcpy(ref,reff);
   marca = new char[40];
   strcpy(marca,marcaa);
   color = new char[40];
   strcpy(color,colorr);
   model = new char[40];
   strcpy(model,modell);
}


Y luego lo invocas así:

Código:
sabata s2("t46t","Kelmo","blanc","guay");


O sino, dejas el código como antes, así:

Código:
sabata::sabata(char *reff, char *marcaa, char *colorr, char *modell)
{
   ref = new char[40];
   strcpy(ref,reff);
   marca = new char[40];
   strcpy(marca,marcaa);
   color = new char[40];
   strcpy(color,colorr);
   model = new char[40];
   strcpy(model,modell);
}


Y luego, para llamar al método, haces casting de tipos, así:

Código:
sabata s2((char *)"t46t", (char *)"Kelmo", (char *)"blanc", (char *)"guay");


Pero este 2° método esta desaconsejado y es mejor el primero.

_________________
Desarrollo en Qt: Qt Developer Network
Mis proyectos: github | SourceForge.net

 Perfil WWW  

Desconectado
Forista Nuevo
Forista Nuevo
Avatar de Usuario

Registrado: Dom Dic 20, 2009 3:33 am
Mensajes: 36

Nota Publicado: Dom Ene 09, 2011 11:29 pm 
Arriba  
El warning se debe a que estás pasando cadenas constantes a una función que admite char * como parametro, el problema está en que si intentases modificar esas cadenas constantes dentro de la función el resultado seria indefinido, por eso el warning te lo advierte. La solución es cambiar el tipo de parametros que pasas a la función a "const char *" así te ahorras casts innecesarios.

_________________
Just feel the code...

 Perfil  
Mostrar mensajes previos:  Ordenar por  
 [ 5 mensajes ] 
Nuevo tema Responder al tema

Saltar a:  


 Temas relacionados   Autor   Respuestas   Vistas   Último mensaje 
Conversión de un String Hex a Int en Java

en Programación

ceduardo

0

636

Sab Sep 04, 2010 7:58 pm

ceduardo Ver último mensaje

conversión de videos

en Vídeos

doc

5

440

Jue Jun 21, 2018 2:55 am

neurus Ver último mensaje

Conversión de paquetes tar.gz a rpm.

en Software

manara39

1

750

Dom Feb 22, 2009 6:27 pm

enriquehh Ver último mensaje

Conversion de php5 a php7

en Programación

lesthersrv

5

429

Dom Ene 28, 2018 10:55 pm

elhui2 Ver último mensaje

Problema con Volumen dinámico 2HD en un Volumen ya hecho, problema, como lo re-monto para recuperar los datos?.

en Hardware

Silnox

0

691

Mar Mar 09, 2010 3:09 pm

Silnox Ver último mensaje



¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group :: Style based on FI Subice by phpBBservice.nl :: Todos los horarios son UTC + 1 hora [ DST ]
Traducción al español por Huan Manwë
phpBB SEO