Im having problems implementing operator* in a class with 2 variables, a float and an int, of type float*x^int
When i try to * 2 objects or a float and an object the program stops and ends with an error.
Here is all the code im using, i appreciate any help.
Main file:
#include <iostream>
#include "usuario.h"
usuario& operator*(usuario& u1,usuario& u2);
usuario& operator*(usuario& u1,float num);
int main()
{
usuario u1;
usuario u2;
std::cout<<"Monomio 1:";
std::cin>>u1;
std::cout<<std::endl<<"Monomio 2:";
std::cin>>u2;
float alfa = 3.2;
usuario u3 = u1*u2;
usuario u4 = u1;
std::cout<<u1<<"*"<<u2<<"="<<u3<<std::endl;
std::cout<<u1<<"*"<<alfa<<"="<<u4;
return 0;
}
usuario& operator*(usuario& u1,usuario u2)
{
u1*=u2;
return u1;
}
usuario& operator*(usuario& u1,float num)
{
usuario u2(num,0);
u1*=u2;
return u1;
}
Class file:
#ifndef USUARIO_H
#define USUARIO_H
#include <iostream>
class usuario
{
public:
usuario();
usuario(float numero, int exponente);
usuario(const usuario& u);
usuario& operator=(const usuario& u);
usuario& operator*=(const usuario& u);
float num() const;
int exp() const ;
private:
float numero;
int exponente;
};
std::istream& operator>>(std::istream& in, usuario& u);
std::ostream& operator<<(std::ostream& out,const usuario& u);
#endif // USUARIO_H
Implementation file:
#include "usuario.h"
usuario::usuario():numero(1),exponente(1)
{
}
usuario::usuario(float numero, int exponente):numero(numero),exponente(exponente)
{
}
usuario::usuario(const usuario& u):numero(u.numero),exponente(u.exponente)
{
}
usuario& usuario::operator*=(const usuario& u)
{
numero*=u.numero;
exponente+=u.exponente;
return *this;
}
std::istream& operator>>(std::istream& in ,usuario& u)
{
char ch;
float numero;
int exponente;
in>>numero;
in>>ch;
in>>ch;
in>>exponente;
u = usuario(numero,exponente);
return in;
}
std::ostream& operator<<(std::ostream& out,const usuario& u)
{
out<<u.num();
out<<"x";
out<<"^";
out<<u.exp();
return out;
}
float usuario::num()const
{
return numero;
}
int usuario::exp()const
{
return exponente;
}
usuario& usuario::operator=(const usuario& u)
{
numero = u.numero;
exponente = u.exponente;
return *this;
}
Btw, the *operators are implemented and defined in the main file, im trying different thing but same happens, i would appreciate any help. Thanks
Im trying to implement the *operator for a class, but an error occurs