Problema con Char

Iniciado por <<<-Basura->>>, 24 Junio 2013, 09:12 AM

0 Miembros y 1 Visitante están viendo este tema.

<<<-Basura->>>

Código (cpp) [Seleccionar]

class M{
};

int main(){
char c[5];

c = typeid(M).name();

return 0;
}



Alguien sabe porque se da este problema:

Citar

error: incompatible types in assignment of 'const char*' to 'char[5]'
<<<--Basura-->>>

kmilinh0

typeid(M).name();

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

const char c[5];

prueba a ver

ecfisa

#2
Hola.

typeid(x).name() devuelve un apuntador a c-string ( type_info::name ), es decir que por ejemplo podrías hacer:

Código (c++) [Seleccionar]

...
class M { };

...
{
 string typ1 = typeid(M).name();
 // o tambien:
 char *typ2 = (char*)typeid(M).name();


Saludos. :)

satu

Buenas!!

O también....

Código (cpp) [Seleccionar]

strcpy(c, typeid(M).name());

o strncpy

Saludos
Breakbeat como forma de vida

rir3760

Cita de: <<<-Underwar->>> en 24 Junio 2013, 09:12 AM
Código (cpp) [Seleccionar]

class M{
};

int main(){
char c[5];

c = typeid(M).name();

return 0;
}
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
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

<<<-Basura->>>

Si creo que la única solución viable es la de strncpy, así evito cualquier problema futuro
<<<--Basura-->>>