Compiling an inherited class in C++ gives constructor error

Asked

Viewed 118 times

3

I need to create a class for chess pieces. I created the class Peca and her derivative, Bispo.

When I try to compile the bishop class, the compiler returns reset error. How can I resolve?

#ifndef PECA_H
#define PECA_H
#include <string>

using std::string;

class Peca {

    private:
        int cor; //0 para as brancas, 1 para as pretas
        bool emJogo;

    public:
        Peca(int cor);
        string desenha();
        bool checaMovimento(int linhaOrigem, int colunaOrigem, int linhaDestino, int colunaDestino);
        int getCor();
        bool estaEmJogo();
        void setForaDeJogo(bool estado);
};
#endif

Peca. h

#include "Peca.h"

using std::string;

class Bispo: public Peca {
    public:
        Bispo(int cor): Peca(cor);
        bool checaMovimento(int linhaOrigem, int colunaOrigem, int linhaDestino, int colunaDestino);
        string desenha();
};

Bishop. h

#include "Bispo.h"
#include <cmath>

Bispo::Bispo(int cor): Peca(cor){};

bool Bispo::checaMovimento(int linhaOrigem, int colunaOrigem, int linhaDestino, int colunaDestino)
{
    if (abs(linhaDestino - linhaOrigem) == abs(colunaDestino - colunaOrigem))
        return true;
    else
        return false;
}

//Minúsculo para peças brancas, maiúsculo para as peças pretas
string Bispo::desenha()
{
    if(getCor() == 0) // Peça branca
        return("b");
    else
        return("B");
}

Bishop.cpp

Erro do compilador

1 answer

3


In class declaration the method should have no implementation and you put an initializer, you have to take:

class Bispo: public Peca {
    public:
        Bispo(int cor);
        bool checaMovimento(int linhaOrigem, int colunaOrigem, int linhaDestino, int colunaDestino);
        string desenha();
};

I put in the Github for future reference.

Browser other questions tagged

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