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:
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?