Foro de elhacker.net

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
  1. struct E{
  2.   int x;
  3.   E(int n) : x(n) {};
  4. };
  5. int main(){
  6. E e (43);
  7. //e (21) <- No es valido, tendria que crear una nueva variable.
  8. E e2 (21);
  9. e = e2;
  10. }
¿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
  1. e.x =  21;

O si e es un puntero

Código
  1. e->x =  21;


Título: Re: Cambiar valor de una variable de tipo estructura
Publicado por: 4dr14n31t0r en 27 Septiembre 2016, 19:52 pm
Código
  1. e.x =  21;

O si e es un puntero

Código
  1. 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
  1. e = E(21);

Antes creia que la unica manera de usar el constructor era asi:
Código
  1. Estructura e (43);