Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: <<<-Basura->>> en 24 Junio 2013, 09:12 am



Título: Problema con Char
Publicado por: <<<-Basura->>> en 24 Junio 2013, 09:12 am
Código
  1. class M{
  2. };
  3.  
  4. int main(){
  5. char c[5];
  6.  
  7. c = typeid(M).name();
  8.  
  9. return 0;
  10. }
  11.  


Alguien sabe porque se da este problema:

Citar

error: incompatible types in assignment of 'const char*' to 'char[5]'


Título: Re: Problema con Char
Publicado por: kmilinh0 en 24 Junio 2013, 10:18 am
Código:
typeid(M).name();


eso devuelve un const y tu variable c no es const. Creo que solo es eso. Declara c como:

Código:
 const char c[5]; 

prueba a ver


Título: Re: Problema con Char
Publicado por: ecfisa en 24 Junio 2013, 11:35 am
Hola.

typeid(x).name() devuelve un apuntador a c-string ( type_info::name (http://www.cplusplus.com/reference/typeinfo/type_info/name/) ), es decir que por ejemplo podrías hacer:

Código
  1. ...
  2. class M { };
  3.  
  4. ...
  5. {
  6.  string typ1 = typeid(M).name();
  7.  // o tambien:
  8.  char *typ2 = (char*)typeid(M).name();
  9.  

Saludos. :)


Título: Re: Problema con Char
Publicado por: satu en 24 Junio 2013, 11:57 am
Buenas!!

O también....

Código
  1. strcpy(c, typeid(M).name());
o strncpy

Saludos


Título: Re: Problema con Char
Publicado por: rir3760 en 24 Junio 2013, 18:03 pm
Código
  1. class M{
  2. };
  3.  
  4. int main(){
  5. char c[5];
  6.  
  7. c = typeid(M).name();
  8.  
  9. return 0;
  10. }
En C y C++ los arrays no pueden utilizarse en asignaciones (en ellas son lvalues pero no son modificables).

La solución es utilizar la función strcpy como en el ejemplo de satu para copiar la cadena en el array o bien utilizar un objeto de clase string como en el ejemplo de ecfisa.

Un saludo


Título: Re: Problema con Char
Publicado por: <<<-Basura->>> en 2 Julio 2013, 08:39 am
Si creo que la única solución viable es la de strncpy, así evito cualquier problema futuro