10-06-2013, 01:20
Hola, tengo un problema al utilizar un tipo de dato string, tengo la siguiente clase y luego intento implementar un metodo para agregar datos. Pongo el codigo y al final el error que me tira:
Clase:
Se reserva memoria con new y un valro de 10 datos (o sea puedo ingresar hasta 10 alumnos, no me preocupa por ahora hacerlo mas dinamico).
Codigo donde implemento para agregar datos
La llamada para llenar los datos es asi:
int main(void)
{
alumnos nombres;
nombres.addinfo(123,"pepito");
nombres.addinfo(234,"juan");
CONTINUA CODIGO...
El error que me tira esta en la funcion void alumnos::addinfo(int leg, std::string nom)
me dice lo siguiente:
error: C2664: 'memcpy' : no se puede convertir el par metro 1 de 'std::_String_iterator<_Elem,_Traits,_Alloc>' a 'void *'
o sea... aca: memcpy(nombre[i],&nom,sizeof(char)*nom.length());
Alguien sabe como soluciono esto?
Clase:
class alumnos
{
protected:
int *legajo;
std::string *nombre;
int cant;
int tam;
public:
alumnos(int=10);//Tamaño cantidad de alumnos.
~alumnos();
void addinfo(int, std::string);
friend std::ostream& operator <<(std::ostream&, const alumnos&);
};
Se reserva memoria con new y un valro de 10 datos (o sea puedo ingresar hasta 10 alumnos, no me preocupa por ahora hacerlo mas dinamico).
Codigo donde implemento para agregar datos
void alumnos::addinfo(int leg, std::string nom)
{
int i=0;
while(i<cant)
i++;
memcpy(&legajo[i],&leg,sizeof(int));
memcpy(nombre[i],&nom,sizeof(char)*nom.length());
cant++;
}
La llamada para llenar los datos es asi:
int main(void)
{
alumnos nombres;
nombres.addinfo(123,"pepito");
nombres.addinfo(234,"juan");
CONTINUA CODIGO...
El error que me tira esta en la funcion void alumnos::addinfo(int leg, std::string nom)
me dice lo siguiente:
error: C2664: 'memcpy' : no se puede convertir el par metro 1 de 'std::_String_iterator<_Elem,_Traits,_Alloc>' a 'void *'
o sea... aca: memcpy(nombre[i],&nom,sizeof(char)*nom.length());
Alguien sabe como soluciono esto?