error: use of deleted function 'Fight: Fight ()'

0

Good afternoon, I'm trying several problems compiling the code below in code :: blocks with g ++ and I'd like to get help, thanks in advance.

Main.cpp content:

#include "Lutador.cpp"
#include <iostream>
#include <string>

int main(){

    Lutador *Pretty_Boy=new Lutador("Pretty  Boy","França",11,2,1,31,1.75,68.9);
    Lutador *Putscript=new Lutador("Putscript","Brasil",14,2,3,29,1.68,57.8);
    Lutador *Snapshadow=new Lutador("Snapshadow","EUA",12,2,1,35,1.65,80.9);
    Lutador *Deat_Code=new Lutador("Dead Code","Austrália",13,0,2,28,1.93,81.6);
    Lutador *Ufocobol=new  Lutador("Ufocobol","Brasil",5,4,3,37,1.70,119.3);;
    Lutador *Nerdaard=new Lutador("Nerdaard","EUA",12,2,4,30,1.81,105.7);

    Luta *UEC01=new Luta;

    UEC01->MarcarLuta(*Pretty_Boy, *Putscript);

    return 0;
}

Fighter class content.h

#ifndef LUTADOR_H_INCLUDED
#define LUTADOR_H_INCLUDED

#include <string>

class Lutador{
    private:
        std::string nome;
        std::string nacionalidade;
        std::string categoria; //peso leve, peso médio, peso pesado
        short vitorias;
        short derrotas;
        short empates;
        short idade;
        float altura;
        float peso;
    public:
        std::string getNome();
        std::string getNacionalidade();
        std::string getCategoria();
        short getVitorias();
        short getDerrotas();
        short getEmpates();
        short getIdade();
        float getAltura();
        float getPeso();
    public:
        void setNome(std::string nome);
        void setNacionalidade(std::string nacionalidade);
        void setVitorias(short vitorias);
        void setDerrotas(short derrotas);
        void setEmpates(short empates);
        void setIdade(short idade);
        void setAltura(float altura);
        void setPeso(float peso);
    public:
        void apresenta();
        void status();
        void ganharLuta();
        void perderLuta();
        void empatarLuta();
    public:
        Lutador(std::string nome, std::string nacionalidade, short vitorias, short derrotas,short empates,short idade, float altura, float peso);
};

#endif // LUTADOR_H_INCLUDED

Content of class Struggle.h

#ifndef LUTA_H_INCLUDED
#define LUTA_H_INCLUDED

#include "Lutador.h"

class Luta{
    private:
        Lutador Desafiado;
        Lutador Desafiante;
        short rounds;
        bool aprovada;
    public:
        Lutador getDesafiado();
        Lutador getDesafiante();
        short getRounds();
        bool getAprovada();
    public:
        void setDesafiado(Lutador DO);
        void setDesafiante(Lutador DE);
        void setRounds(short num_rounds);
        void setAprovada(short YN);
    public:
        void MarcarLuta(Lutador L1, Lutador L2);
        void lutar();

};

#endif // LUTA_H_INCLUDED

Contents of the Fighter.cpp file

#include "Lutador.h"
#include "Luta.h"
#include <iostream>
#include <string>

std::string Lutador::getNome(){
    return nome;
}
std::string Lutador::getNacionalidade(){
    return nacionalidade;
}
std::string Lutador::getCategoria(){
    return categoria;
}
short Lutador::getVitorias(){
    return vitorias;
}
short Lutador::getDerrotas(){
    return derrotas;
}
short Lutador::getEmpates(){
    return empates;
}
short Lutador::getIdade(){
    return idade;
}
float Lutador::getAltura(){
    return altura;
}
float Lutador::getPeso(){
    return peso;
}

void Lutador::setNome(std::string nome){
    this->nome=nome;
}
void Lutador::setNacionalidade(std::string nacionalidade){
    this->nacionalidade=nacionalidade;
}
void Lutador::setVitorias(short vitorias){
    this->vitorias=vitorias;
}
void Lutador::setDerrotas(short derrotas){
    this->derrotas=derrotas;
}
void Lutador::setEmpates(short empates){
    this->empates=empates;
}
void Lutador::setIdade(short idade){
    this->idade=idade;
}
void Lutador::setAltura(float altura){
    this->altura=altura;
}
void Lutador::setPeso(float peso){
    this->peso=peso;
}

void Lutador::apresenta(){
    std::cout << "Nome.............: " << getNome() << "\n";
    std::cout << "Nacionalidade....: " << getNacionalidade() << "\n";
    std::cout << "Categoria........: " << getCategoria() << "\n";
    std::cout << "Vitorias.........: " << getVitorias() << "\n";
    std::cout << "Derrotas.........: " << getDerrotas() << "\n";
    std::cout << "Empates..........: " << getEmpates() << "\n";
    std::cout << "Idade............: " << getIdade() << "\n";
    std::cout << "Altura...........: " << getAltura() << "\n";
    std::cout << "Peso.............: " << getPeso() << "\n\n\n";
}

void Lutador::status(){
     std::cout << getNome() << "\n";
     std::cout << getVitorias() << "\n";
     std::cout << getEmpates() << "\n";
     std::cout << getDerrotas() << "\n";
}
void Lutador::ganharLuta(){
     setVitorias(getVitorias()+1);
}
void Lutador::perderLuta(){
     setDerrotas(getVitorias()+1);
}
void Lutador::empatarLuta(){
     setEmpates(getEmpates()+1);
}

 Lutador::Lutador(std::string no, std::string na, short vi, short de,short    em,short id, float al, float pe){

    setNome(no);
    setNacionalidade(na);
    setVitorias(vi);
    setDerrotas(de);
    setEmpates(em);
    setIdade(id);
    setAltura(al);
    setPeso(pe);

    if(peso<=80){
        categoria="Peso Leve";
    }else if(peso<=110){
        categoria="Peso medio";
    }else if(peso>110){
        categoria="Peso pesado";
    }
}

Contents of the Luta.cpp file

#include "Luta.h"
#include <iostream>

Lutador Luta::getDesafiado(){
    return Desafiado;
}
Lutador Luta::getDesafiante(){
    return Desafiante;
}
short Luta::getRounds(){
    return rounds;
}
bool Luta::getAprovada(){
    return aprovada;
}

void Luta::setDesafiado(Lutador DO){
    Desafiado=DO;
}
void Luta::setDesafiante(Lutador DE){
    Desafiante=DE;
}
void Luta::setRounds(short num_rounds){
    rounds=num_rounds;
}
void Luta::setAprovada(short YN){
    aprovada=YN;

if(aprovada==1){
    std::cout << "Luta aprovada\n";
    lutar();
}else{
        std::cout << "Luta não aprovada\n";
   }
}

void Luta::MarcarLuta(Lutador L1, Lutador L2){
    if(L1.getCategoria()!=L2.getCategoria() &&   L1.getNome()!=L2.getNome()){
    setAprovada(0);
    }else{
        setAprovada(1);
        setDesafiado(L1);
        setDesafiante(L2);
    }
}
void Luta::lutar(){
    if(getAprovada()==1){
        Desafiado.apresenta();
        Desafiante.apresenta();
    }else{
        std::cout << "Impossivel realizar a luta\n\n";
    }

    short vencedor=rand()%700;

    if(vencedor<=200){
        Desafiado.empatarLuta();
        Desafiante.empatarLuta();
    }else if(vencedor<=400){
        Desafiado.ganharLuta();
        Desafiante.perderLuta();
    }else if(vencedor<=600){
        Desafiado.perderLuta();
        Desafiante.ganharLuta();
    }
}

The errors returned in the compilation are these:

  

/ home / Khyser / Documents / OOP Course / Classroom 07 / main.cpp | 14 | error: use of   deleted function 'Fight: Fight ()' |

     

/ home / Khyser / Documents / OOP Course / Lecture 07 / Luta.h | 6 | note:   'Fight: Fight ()' is implicitly deleted because of the default definition   would be ill-formed: |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Luta.h | 6 | error: no   matching function for call to 'Fighter: Fighter ()' |

     

/ home / Khyser / Documents / OOP Course / Lecture 07 / Fighter.cpp | 87 | note:   candidate: Fighter :: Fighter (std :: __ cxx11 :: string,   std :: __ cxx11 :: string, short int, short int, short int, short int,   float, float) |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.cpp | 87 | note:
  candidate expects 8 arguments, 0 provided |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:   candidate: Fighter :: Fighter (const Fighter &) |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:
  candidate expects 1 argument, 0 provided |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:   candidate: Fighter :: Fighter (Fighter & & amp;) |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:
  candidate expects 1 argument, 0 provided |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Luta.h | 6 | error: no   matching function for call to 'Fighter: Fighter ()' |

     

/ home / Khyser / Documents / OOP Course / Lecture 07 / Fighter.cpp | 87 | note:   candidate: Fighter :: Fighter (std :: __ cxx11 :: string,   std :: __ cxx11 :: string, short int, short int, short int, short int,   float, float) |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.cpp | 87 | note:
  candidate expects 8 arguments, 0 provided |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:   candidate: Fighter :: Fighter (const Fighter &) |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:
  candidate expects 1 argument, 0 provided |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:   candidate: Fighter :: Fighter (Fighter & & amp;) |

     

/ home / Khyser / Documents / OOP Course / Classroom 07 / Fighter.h | 6 | note:
  candidate expects 1 argument, 0 provided |

    
asked by anonymous 23.09.2017 / 22:08

2 answers

0

In order to be able to pass the object Lutador by value, correct implementation of " Rule of the Three .

Wikipedia:

  

An informal rule in object-oriented development in C ++   that if a class or structure has one of the following items, it   probably should have all three: Destrutor , construtor de cópia and operador de atribuição (=) .

     

These three methods are special member functions created by   compiler automatically if they are not defined by the   developer. If one of these methods is explicitly defined   by the developer, this means that the version generated by the compiler   does not fit into one of the cases, and therefore most probably does not   is good for other cases.

Here is a possible solution (tested) with the rule implicit in the Lutador class and the inclusion of a construtor padrão in the Luta class:

Lutador.h

#ifndef LUTADOR_H
#define LUTADOR_H

#include <string>

class Lutador
{
    public:

        Lutador( void );
        Lutador( std::string nome, std::string nacionalidade, short vitorias, short derrotas, short empates, short idade, float altura, float peso);
        Lutador( const Lutador & obj );
        virtual ~Lutador( void );
        Lutador& operator=( const Lutador & obj );
        bool operator==( Lutador &obj );

    private:

        std::string nome;
        std::string nacionalidade;
        short vitorias;
        short derrotas;
        short empates;
        short idade;
        float altura;
        float peso;

    public:

        std::string getNome();
        std::string getNacionalidade();
        std::string getCategoria();
        short getVitorias();
        short getDerrotas();
        short getEmpates();
        short getIdade();
        float getAltura();
        float getPeso();

    public:

        void setNome(std::string nome);
        void setNacionalidade(std::string nacionalidade);
        void setVitorias(short vitorias);
        void setDerrotas(short derrotas);
        void setEmpates(short empates);
        void setIdade(short idade);
        void setAltura(float altura);
        void setPeso(float peso);

    public:

        void apresenta();
        void status();
        void ganharLuta();
        void perderLuta();
        void empatarLuta();
};

#endif

Luta.h

#ifndef LUTA_H
#define LUTA_H

#include "Lutador.h"

class Luta
{
    public:

        Luta();
        virtual ~Luta();

    private:

        Lutador Desafiado;
        Lutador Desafiante;
        short rounds;
        bool aprovada;

    public:

        Lutador getDesafiado();
        Lutador getDesafiante();
        short getRounds();
        bool getAprovada();

    public:

        void setDesafiado(Lutador DO);
        void setDesafiante(Lutador DE);
        void setRounds(short num_rounds);
        void setAprovada(short YN);

    public:

        void MarcarLuta(Lutador L1, Lutador L2);
        void lutar();

};

#endif

Lutador.cpp

#include <iostream>
#include <string>

#include "Lutador.h"
#include "Luta.h"

Lutador::Lutador(void) :
    nome(""),
    nacionalidade(""),
    vitorias(0),
    derrotas(0),
    empates(0),
    idade(0),
    altura(0),
    peso(0)
{
}

Lutador::Lutador( const Lutador & obj ) :
    nome(obj.nome),
    nacionalidade(obj.nacionalidade),
    vitorias(obj.vitorias),
    derrotas(obj.derrotas),
    empates(obj.empates),
    idade(obj.idade),
    altura(obj.altura),
    peso(obj.peso)
{
}

Lutador& Lutador::operator=( const Lutador & obj ){
    this->nome = obj.nome;
    this->nacionalidade = obj.nacionalidade;
    this->vitorias = obj.vitorias;
    this->derrotas = obj.derrotas;
    this->empates = obj.empates;
    this->idade = obj.idade;
    this->altura = obj.altura;
    this->peso = obj.peso;
    return *this;
}

bool Lutador::operator==( Lutador &obj ) {
    return ((this->nome != obj.nome) && (this->getCategoria() != obj.getCategoria()));
}

Lutador::~Lutador(void)
{
}

Lutador::Lutador(std::string no, std::string na, short vi, short de,short em,short id, float al, float pe) :
    nome(no),
    nacionalidade(na),
    vitorias(vi),
    derrotas(de),
    empates(em),
    idade(id),
    altura(al),
    peso(pe)
{
}
std::string Lutador::getNome(){
    return nome;
}
std::string Lutador::getNacionalidade(){
    return nacionalidade;
}
std::string Lutador::getCategoria(){
    if(peso<=80){
        return "Peso Leve";
    }else if(peso<=110){
        return "Peso medio";
    }
    else {
        return "Peso pesado";
    }
}
short Lutador::getVitorias(){
    return vitorias;
}
short Lutador::getDerrotas(){
    return derrotas;
}
short Lutador::getEmpates(){
    return empates;
}
short Lutador::getIdade(){
    return idade;
}
float Lutador::getAltura(){
    return altura;
}
float Lutador::getPeso(){
    return peso;
}

void Lutador::setNome(std::string nome){
    this->nome=nome;
}
void Lutador::setNacionalidade(std::string nacionalidade){
    this->nacionalidade=nacionalidade;
}
void Lutador::setVitorias(short vitorias){
    this->vitorias=vitorias;
}
void Lutador::setDerrotas(short derrotas){
    this->derrotas=derrotas;
}
void Lutador::setEmpates(short empates){
    this->empates=empates;
}
void Lutador::setIdade(short idade){
    this->idade=idade;
}
void Lutador::setAltura(float altura){
    this->altura=altura;
}
void Lutador::setPeso(float peso){
    this->peso=peso;
}

void Lutador::apresenta(){
    std::cout << "Nome.............: " << getNome() << "\n";
    std::cout << "Nacionalidade....: " << getNacionalidade() << "\n";
    std::cout << "Categoria........: " << getCategoria() << "\n";
    std::cout << "Vitorias.........: " << getVitorias() << "\n";
    std::cout << "Derrotas.........: " << getDerrotas() << "\n";
    std::cout << "Empates..........: " << getEmpates() << "\n";
    std::cout << "Idade............: " << getIdade() << "\n";
    std::cout << "Altura...........: " << getAltura() << "\n";
    std::cout << "Peso.............: " << getPeso() << "\n\n\n";
}

void Lutador::status(){
     std::cout << getNome() << "\n";
     std::cout << getVitorias() << "\n";
     std::cout << getEmpates() << "\n";
     std::cout << getDerrotas() << "\n";
}
void Lutador::ganharLuta(){
     setVitorias(getVitorias()+1);
}
void Lutador::perderLuta(){
     setDerrotas(getVitorias()+1);
}
void Lutador::empatarLuta(){
     setEmpates(getEmpates()+1);
}

Luta.cpp

#include "Luta.h"
#include <cstdlib>
#include <iostream>

Luta::Luta(){
}

Luta::~Luta(){
}

Lutador Luta::getDesafiado(){
    return Desafiado;
}
Lutador Luta::getDesafiante(){
    return Desafiante;
}
short Luta::getRounds(){
    return rounds;
}
bool Luta::getAprovada(){
    return aprovada;
}

void Luta::setDesafiado(Lutador DO){
    Desafiado=DO;
}
void Luta::setDesafiante(Lutador DE){
    Desafiante=DE;
}
void Luta::setRounds(short num_rounds){
    rounds=num_rounds;
}
void Luta::setAprovada(short YN){
    aprovada=YN;
    if(aprovada==1){
        std::cout << "Luta aprovada\n";
    }else{
        std::cout << "Luta não aprovada\n";
    }
}

void Luta::MarcarLuta(Lutador L1, Lutador L2){
    if( L1 == L2 ){
        setAprovada(0);
    }else{
        setAprovada(1);
        setDesafiado(L1);
        setDesafiante(L2);
    }
}
void Luta::lutar(){
    if(getAprovada()==1){
        Desafiado.apresenta();
        Desafiante.apresenta();
    }else{
        std::cout << "Impossivel realizar a luta\n\n";
    }

    short vencedor=rand()%700;

    if(vencedor<=200){
        Desafiado.empatarLuta();
        Desafiante.empatarLuta();
    }else if(vencedor<=400){
        Desafiado.ganharLuta();
        Desafiante.perderLuta();
    }else if(vencedor<=600){
        Desafiado.perderLuta();
        Desafiante.ganharLuta();
    }
}

main.cpp

#include <iostream>
#include <string>

#include "Lutador.h"
#include "Luta.h"

int main( void ){

    Lutador Pretty_Boy("Pretty Boy","França",11,2,1,31,1.75,68.9);
    Lutador Putscript("Putscript","Brasil",14,2,3,29,1.68,57.8);
    Lutador Snapshadow("Snapshadow","EUA",12,2,1,35,1.65,80.9);
    Lutador Deat_Code("Dead Code","Austrália",13,0,2,28,1.93,81.6);
    Lutador Ufocobol("Ufocobol","Brasil",5,4,3,37,1.70,119.3);
    Lutador Nerdaard("Nerdaard","EUA",12,2,4,30,1.81,105.7);

    Luta UEC01;

    UEC01.MarcarLuta( Pretty_Boy, Putscript );

    UEC01.lutar();

   return 0;
}

Output:

$ ./luta 
Luta aprovada
Nome.............: Pretty Boy
Nacionalidade....: França
Categoria........: Peso Leve
Vitorias.........: 11
Derrotas.........: 2
Empates..........: 1
Idade............: 31
Altura...........: 1.75
Peso.............: 68.9


Nome.............: Putscript
Nacionalidade....: Brasil
Categoria........: Peso Leve
Vitorias.........: 14
Derrotas.........: 2
Empates..........: 3
Idade............: 29
Altura...........: 1.68
Peso.............: 57.8
    
25.09.2017 / 17:31
0

Okay, let's break it down. Generally, the .cpp is not included in the main. You correctly placed the include guard in the headers (.h), but not in the .cpp, which caused the functions to be reset. And he said UEC01 = new Fight. Notice that you did not call a constructor (Fight ();), which also caused error.

Your main looks like this:

#include "Lutador.h"
#include "Luta.h"
#include <iostream>
#include <string>

int main(){

    Lutador *Pretty_Boy=new Lutador("Pretty  Boy","França",11,2,1,31,1.75,68.9);
    Lutador *Putscript=new Lutador("Putscript","Brasil",14,2,3,29,1.68,57.8);
    Lutador *Snapshadow=new Lutador("Snapshadow","EUA",12,2,1,35,1.65,80.9);
    Lutador *Deat_Code=new Lutador("Dead Code","Austrália",13,0,2,28,1.93,81.6);
    Lutador *Ufocobol=new  Lutador("Ufocobol","Brasil",5,4,3,37,1.70,119.3);;
    Lutador *Nerdaard=new Lutador("Nerdaard","EUA",12,2,4,30,1.81,105.7);

    Luta *UEC01 = new Luta();

    UEC01->MarcarLuta(Pretty_Boy, Putscript);

    return 0;
}

I've changed your code a bit so that it gets more dynamic. Another fatal error was in the MarkFlick () function, setAprove caused the program to go to fight () before setting the defaults, which gave segfault. I just reversed the order there:

Your Fighter.h:

#ifndef LUTADOR_H_INCLUDED
#define LUTADOR_H_INCLUDED

#include <string>

class Lutador{
    private:
        std::string nome;
        std::string nacionalidade;
        std::string categoria; //peso leve, peso médio, peso pesado
        short vitorias;
        short derrotas;
        short empates;
        short idade;
        float altura;
        float peso;
    public:
        std::string getNome();
        std::string getNacionalidade();
        std::string getCategoria();
        short getVitorias();
        short getDerrotas();
        short getEmpates();
        short getIdade();
        float getAltura();
        float getPeso();
    public:
        void setNome(std::string nome);
        void setNacionalidade(std::string nacionalidade);
        void setVitorias(short vitorias);
        void setDerrotas(short derrotas);
        void setEmpates(short empates);
        void setIdade(short idade);
        void setAltura(float altura);
        void setPeso(float peso);
    public:
        void apresenta();
        void status();
        void ganharLuta();
        void perderLuta();
        void empatarLuta();
    public:
        Lutador(std::string nome, std::string nacionalidade, short vitorias, short derrotas,short empates,short idade, float altura, float peso);
};

#endif // LUTADOR_H_INCLUDED

Your Fight.h:

#ifndef LUTA_H_INCLUDED
#define LUTA_H_INCLUDED

#include "Lutador.h"

    class Luta{
        private:
            Lutador *Desafiado;
            Lutador *Desafiante;
            short rounds;
            bool aprovada;
        public:
            Lutador *getDesafiado();
            Lutador *getDesafiante();
            short getRounds();
            bool getAprovada();
        public:
            void setDesafiado(Lutador *DO);
            void setDesafiante(Lutador *DE);
            void setRounds(short num_rounds);
            void setAprovada(short YN);
        public:
            void MarcarLuta(Lutador *L1, Lutador *L2);
            void lutar();

    };

    #endif // LUTA_H_INCLUDED

Your Fighter.cpp

#include "Lutador.h"
#include "Luta.h"
#include <iostream>
#include <string>



std::string Lutador::getNome(){
    return nome;
}
std::string Lutador::getNacionalidade(){
    return nacionalidade;
}
std::string Lutador::getCategoria(){
    return categoria;
}
short Lutador::getVitorias(){
    return vitorias;
}
short Lutador::getDerrotas(){
    return derrotas;
}
short Lutador::getEmpates(){
    return empates;
}
short Lutador::getIdade(){
    return idade;
}
float Lutador::getAltura(){
    return altura;
}
float Lutador::getPeso(){
    return peso;
}

void Lutador::setNome(std::string nome){
    this->nome=nome;
}
void Lutador::setNacionalidade(std::string nacionalidade){
    this->nacionalidade=nacionalidade;
}
void Lutador::setVitorias(short vitorias){
    this->vitorias=vitorias;
}
void Lutador::setDerrotas(short derrotas){
    this->derrotas=derrotas;
}
void Lutador::setEmpates(short empates){
    this->empates=empates;
}
void Lutador::setIdade(short idade){
    this->idade=idade;
}
void Lutador::setAltura(float altura){
    this->altura=altura;
}
void Lutador::setPeso(float peso){
    this->peso=peso;
}

void Lutador::apresenta(){
    std::cout << "Nome.............: " << this->getNome() << "\n";
    std::cout << "Nacionalidade....: " << this->getNacionalidade() << "\n";
    std::cout << "Categoria........: " << this->getCategoria() << "\n";
    std::cout << "Vitorias.........: " << this->getVitorias() << "\n";
    std::cout << "Derrotas.........: " << this->getDerrotas() << "\n";
    std::cout << "Empates..........: " << this->getEmpates() << "\n";
    std::cout << "Idade............: " << this->getIdade() << "\n";
    std::cout << "Altura...........: " << this->getAltura() << "\n";
    std::cout << "Peso.............: " << this->getPeso() << "\n\n\n";
}

void Lutador::status(){
     std::cout << getNome() << "\n";
     std::cout << getVitorias() << "\n";
     std::cout << getEmpates() << "\n";
     std::cout << getDerrotas() << "\n";
}
void Lutador::ganharLuta(){
     setVitorias(getVitorias()+1);
}
void Lutador::perderLuta(){
     setDerrotas(getVitorias()+1);
}
void Lutador::empatarLuta(){
     setEmpates(getEmpates()+1);
}

 Lutador::Lutador(std::string no, std::string na, short vi, short de,short    em,short id, float al, float pe){

    setNome(no);
    setNacionalidade(na);
    setVitorias(vi);
    setDerrotas(de);
    setEmpates(em);
    setIdade(id);
    setAltura(al);
    setPeso(pe);

    if(peso<=80){
        categoria="Peso Leve";
    }else if(peso<=110){
        categoria="Peso medio";
    }else if(peso>110){
        categoria="Peso pesado";
    }
}

Your Fight.cpp

#include "Luta.h"
#include <iostream>
#include "Lutador.h"


Lutador* Luta::getDesafiado(){
    return Desafiado;
}
Lutador *Luta::getDesafiante(){
    return Desafiante;
}
short Luta::getRounds(){
    return rounds;
}
bool Luta::getAprovada(){
    return aprovada;
}

void Luta::setDesafiado(Lutador *DO){
    this->Desafiado = DO;
}
void Luta::setDesafiante(Lutador *DE){
    Desafiante=DE;
}
void Luta::setRounds(short num_rounds){
    rounds=num_rounds;
}
void Luta::setAprovada(short YN){
    aprovada=YN;

if(aprovada==1){
    std::cout << "Luta aprovada\n";
    lutar();
}else{
        std::cout << "Luta não aprovada\n";
   }
}

void Luta::MarcarLuta(Lutador *L1, Lutador *L2){
    if(L1->getCategoria()!=L2->getCategoria() &&   L1->getNome()!=L2->getNome()){
    setAprovada(0);
    }else{
        setDesafiado(L1);
        setDesafiante(L2);
        setAprovada(1);
    }
}
void Luta::lutar(){
    if(getAprovada()==1){
        Desafiado->apresenta();
        Desafiante->apresenta();
    }else{
        std::cout << "Impossivel realizar a luta\n\n";
    }

    short vencedor=rand()%700;

    if(vencedor<=200){
    Desafiado->empatarLuta();
    Desafiante->empatarLuta();
}else if(vencedor<=400){
    Desafiado->ganharLuta();
    Desafiante->perderLuta();
}else if(vencedor<=600){
    Desafiado->perderLuta();
    Desafiante->ganharLuta();
}
}
    
23.09.2017 / 23:34