elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [?] Necesito ayuda con sobrecarga de operador +=
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [?] Necesito ayuda con sobrecarga de operador +=  (Leído 1,624 veces)
solinac

Desconectado Desconectado

Mensajes: 1


Ver Perfil
[?] Necesito ayuda con sobrecarga de operador +=
« en: 23 Noviembre 2013, 02:23 am »

Hola, estoy haciendo un programa donde tengo que sobrecargar los operadores [] y += para sumar 4 numeros, pero no logro hacerlo, la suma me da igual a 0.

Ojala que me puedan ayudar para saber que estoy haciendo mal.

Cabecera:
Código:
#ifndef PERSONA_H
#define PERSONA_H

#include <iostream>
using namespace std;

class alumno:public persona
{
public:
friend class maestro;
alumno();
~alumno();
alumno(int&);
alumno(const int&);
int &operator[](int n);
alumno &operator[](alumno n);
int operator <=(alumno a);
int operator / (int n);
friend ostream& operator<< (ostream & salida,const alumno & a);
friend istream& operator>> (istream & entrada, alumno & a);
friend alumno & operator+=(const alumno a, const alumno b);
friend alumno & operator+=(const alumno & a, int o);
friend alumno & operator+=(int o, const alumno &b);
/*friend alumno & operator+(const alumno &a, const alumno &b);*/

protected:
int cal;
int pr;
int c[4];
int x;
int y;
int *ip;
};

#endif

Funciones:
Código:
alumno::alumno()
{
cal=0;
c[1]=0,c[2]=0,c[3]=0,c[4]=0;
x=0;
}

alumno::alumno(int& dato)
{
c[1]=dato;
c[2]=dato;
c[3]=dato;
c[4]=dato;
}


alumno::~alumno(){}

int & alumno::operator[](int n)
{
//cout<<"usamos operador []"<<endl;
return c[n];
}

ostream & operator<< (ostream & salida,const alumno & a)
{

salida << a.c[1];

//cout<<"usamos operador <<"<<endl;

return salida;
}

istream & operator>> (istream & entrada, alumno & a)
{   

entrada >> a.x;
//cout<<"usamos operador >>"<<endl;
return entrada;
}

alumno & operator+=(const alumno  a, const alumno b)
{
alumno t;
t.x = a.x + b.x;
cout<<"usamos operador +="<<endl;
return t;

}

alumno & operator+=(const alumno & a, int o)
{
alumno t;
t.x = a.x + o;
cout<<"usamos operador +="<<endl;
return t;

}

alumno & operator+=(int o,const alumno & b)
{
alumno t;
t.x = o + b.x;
cout<<"usamos operador +="<<endl;
return t;

}

main:
Código:
main:
[code]
#include <iostream>
#include "persona.h"

using namespace std;

int main()
{
alumno a1;
alumno alumno1,alumno2,alumno3,alumno4;
alumno A,B;

cout<<"Ingresa la calificacion de los parciales: \n";

cin>>a1[1];
cin>>a1[2];
cin>>a1[3];
cin>>a1[4];
system("cls");

alumno1=a1[1];
alumno2=a1[2];
alumno3=a1[3];
alumno4=a1[4];

cout<<"Parcial 1: "<<alumno1<<endl;
cout<<"Parcial 2: "<<alumno2<<endl;
cout<<"Parcial 3: "<<alumno3<<endl;
cout<<"Parcial 4: "<<alumno4<<endl;

//Esta es la suma que no me sale:
B=alumno1 += alumno2;

cout<<"Suma: "<<B<<endl;



system ("pause");
}

Muchas gracias de antemano
[/code]


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: [?] Necesito ayuda con sobrecarga de operador +=
« Respuesta #1 en: 25 Noviembre 2013, 20:57 pm »

¡Buenas!

Creo que el error está aquí:
Código
  1. alumno1=a1[1];
  2. alumno2=a1[2];
  3. alumno3=a1[3];
  4. alumno4=a1[4];
  5.  

Estás asignando objetos enteros a objetos de tipo alumno. No se si el compilador que utilizas llamara directamente al constructor de conversión o si espera que el operador de asignación esté sobrecargado... De todas formas el constructor de conversión que utilizas está modificando el vector de la clase, no la variable que utilizas para obtener el valor de la operacion +=

Otro error que estás cometiendo es que consideras subindices en un rango 1-4 para un vector de cuatro elementos. Los subindices deberian estar entre 0 y 3.

Cambia esto y nos cuentas.

¡Saludos!


« Última modificación: 25 Noviembre 2013, 21:10 pm por do-while » En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sobrecarga operador +
Programación C/C++
_Enko 4 2,311 Último mensaje 6 Febrero 2015, 14:56 pm
por _Enko
(Consulta) Sobre la sobrecarga del operador &
Programación C/C++
class_OpenGL 4 2,450 Último mensaje 31 Julio 2016, 18:39 pm
por class_OpenGL
C++ Sobrecarga de un operador por medio de un template?
Programación C/C++
GisiNA 7 4,793 Último mensaje 9 Mayo 2017, 06:18 am
por CalgaryCorpus
Sobrecarga operador -> [C++]
Programación C/C++
K-YreX 2 1,533 Último mensaje 6 Enero 2019, 17:21 pm
por K-YreX
Sobrecarga de operador « 1 2 »
Programación C/C++
digimikeh 10 4,926 Último mensaje 18 Mayo 2019, 03:39 am
por RayR
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines