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
