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]'
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
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:
...
class M { };
...
{
string typ1 = typeid(M).name();
// o tambien:
char *typ2 = (char*)typeid(M).name();
Saludos. :)
Buenas!!
O también....
strcpy(c, typeid(M).name());
o strncpy
Saludos
Cita de: <<<-Underwar->>> en 24 Junio 2013, 09:12 AM
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
Si creo que la única solución viable es la de strncpy, así evito cualquier problema futuro