Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: 4dr14n31t0r en 27 Septiembre 2016, 12:42 PM

Título: Cambiar valor de una variable de tipo estructura
Publicado por: 4dr14n31t0r en 27 Septiembre 2016, 12:42 PM
Estructura o clase, me da lo mismo.

El problema es si hay alguna forma de hacerlo sin tener que crear una nueva variable.
Por ejemplo:
Código (cpp) [Seleccionar]
struct E{
   int x;
   E(int n) : x(n) {};
};
int main(){
E e (43);
//e (21) <- No es valido, tendria que crear una nueva variable.
E e2 (21);
e = e2;
}

¿Alguna idea de como hacer esto sin tener que recurrir a una variable auxiliar?
Título: Re: Cambiar valor de una variable de tipo estructura
Publicado por: do-while en 27 Septiembre 2016, 12:56 PM
Sobrecarga el operador de asignación = para poder asignar a la clase (un struct en C++ es una clase con acceso público por defecto) un valor entero. Si mal no recuerdo los compiladores crean por defecto un operador de asignación miembro a miembro, así que otra opción que tienes es hacer unobjeto = constructor(parametros) (nada aconsejable si algún miembro tiene memoria dinámicamente asignada). O crea una función miembro que asigne un valor entero al miembro de la clase que corresponda...
Título: Re: Cambiar valor de una variable de tipo estructura
Publicado por: MAFUS en 27 Septiembre 2016, 12:58 PM
Código (cpp) [Seleccionar]
e.x =  21;

O si e es un puntero

Código (cpp) [Seleccionar]
e->x =  21;
Título: Re: Cambiar valor de una variable de tipo estructura
Publicado por: 4dr14n31t0r en 27 Septiembre 2016, 19:52 PM
Cita de: MAFUS en 27 Septiembre 2016, 12:58 PM
Código (cpp) [Seleccionar]
e.x =  21;

O si e es un puntero

Código (cpp) [Seleccionar]
e->x =  21;

Solo he puesto de ejemplo esa estructura para no poner mas variables dentro de la misma, pero imaginate que tiene 200. No vas a ir de uno en uno asignandolo todo.

De todos modos gracias, pero ya encontre la respuesta investigando:
Código (cpp) [Seleccionar]
e = E(21);

Antes creia que la unica manera de usar el constructor era asi:
Código (cpp) [Seleccionar]
Estructura e (43);