error: use of Deleted Function Fight::Fight()'

Asked

Viewed 85 times

0

Good afternoon, I am experiencing several problems when compiling the code below in the code::Blocks with g++ and I would like to get help, thanks in advance.

Content of main.cpp:

#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 the Fight class. 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 file Wrestler.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.............: " << 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 file Fight.cpp

#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/POO/Class 07/main.cpp|14|error: use of of Fight::Fight()'|

/home/Khyser/Documents/POO/Class 07/Fighting. h|6|note: Fight::Fight()' is implicitly Deleted because the default Definition would be Ill-Formed:|

/home/Khyser/Documents/POO/Class 07/Fighting. h|6|error: no matching Function for call to Wrestler::Wrestler()'|

/home/Khyser/Documents/POO course/Class 07/Wrestler.cpp|87|note: candidate: Wrestler::Wrestler(Std::__cxx11:string, Std::__cxx11:string, short int, short int, short int, short int, float, float)|

/home/Khyser/Documents/POO Course/Class 07/Wrestler.cpp|87|note:
candidate expects 8 Arguments, 0 provided|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note: candidate: Wrestler::Wrestler(const Wrestler&)|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note:
candidate expects 1 argument, 0 provided|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note: candidate: Wrestler::Wrestler(Wrestler&&)|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note:
candidate expects 1 argument, 0 provided|

/home/Khyser/Documents/POO/Class 07/Fighting. h|6|error: no matching Function for call to Wrestler::Wrestler()'|

/home/Khyser/Documents/POO course/Class 07/Wrestler.cpp|87|note: candidate: Wrestler::Wrestler(Std::__cxx11:string, Std::__cxx11:string, short int, short int, short int, short int, float, float)|

/home/Khyser/Documents/POO Course/Class 07/Wrestler.cpp|87|note:
candidate expects 8 Arguments, 0 provided|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note: candidate: Wrestler::Wrestler(const Wrestler&)|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note:
candidate expects 1 argument, 0 provided|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note: candidate: Wrestler::Wrestler(Wrestler&&)|

/home/Khyser/Documents/POO course/Class 07/Fighter. h|6|note:
candidate expects 1 argument, 0 provided|

2 answers

0

Ok, let’s go in parts. We don’t usually include . cpp in main. You have correctly included include Guard in headers (.h), but not . cpp, which caused redefinition of functions. And said that UEC01 = new Fight. Note that you did not call a builder (Fight()), which also caused error.

Your main gets 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 changed your code a little bit to make it more dynamic. Another fatal error was in the function Marcarluta(), setAprova made the program go to the fight() before setting the challengers, 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 Wrestler.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();
}
}
  • Although the modifications still keep returning the same errors...

0


To be possible the passage of the object Lutador the correct implementation of the "Rule of Three".

Wikipedia:

An informal rule in object-oriented development in C++ calls out 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 not defined by developer. If one of these methods is explicitly defined by the developer, this means that the version generated by the compiler does not serve for one of the cases, and therefore most likely also not serves for other cases.

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

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;
}

Exit:

$ ./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
  • Could you explain what has changed and how your approach works? I think it would be very useful for the community.

  • My approach simply implements the "rule of three", something the original question code simply ignores. https://pt.wikipedia.org/wiki/C%2B%2B#Regra_dos_tr.C3.Aas

  • This I already understood, the intention is to explain what did in the code, but all right is not obligation, it is tip only, after all who arrives on the site this learning yet, explain the changes help, but it is not so necessary. Up until.

  • @Guilhermenascimento: Following edition

Browser other questions tagged

You are not signed in. Login or sign up in order to post.