Ola, estou tendo problemas com polimorfismo em um projeto que estou trabalhando.
O erro eh o seguinte, tenho uma classe Personagem, que uso como base para a classe Ferreiro.
A herança funciona perfeitamente, porém quando tento sobrescrever o metodo inicializar de Personagem em Ferreiro, nao consigo chamar o metodo sobrescrito, só o da classe base (espero que de pra entender)
Segue o codigo:
Personagem.h
#pragma once
#include <iostream>
using namespace std;
Class Personagem
{
public:
Personagem();
~Personagem();
virtual void inicializar(int tipoPersonagem_, int x_, int y_);
protected:
int x, y, tipoPersonagem;
};
Personagem.cpp
#include "Personagem.h"
Personagem::Personagem()
{
}
Personagem::~Personagem()
{
}
void Personagem::inicializar(int tipoPersonagem_, int x_, int y_)
{
x = x_;
y = y_;
tipoPersonagem = tipoPersonagem_;
}
Ferreiro.h
#pragma once
#include "Personagem.h"
class Ferreiro : public Personagem
{
public:
Ferreiro();
~Ferreiro();
void inicializar(int x_, int y_);
private:
int x, y;
};
Ferreiro.cpp
#include "Ferreiro.h"
Ferreiro::Ferreiro()
{
}
Ferreiro::~Ferreiro()
{
}
void Ferreiro::inicializar(int x_, int y_)
{
x = x_;
y = y_;
}
main.cpp
#pragma once
#include "Personagem.h"
#include "Ferreiro.h"
int main()
{
Personagem *persoDinam;
persoDinam = new Ferreiro;
persoDinam->inicializar(300, 300); //aqui ele da erro, dizendo 'too few arguments in function call' pois tenta utilizar o de personagem
return 0;
}
Estou utilizando visual studio 2015, simplifiquei o codigo apenas para as partes q dao erro. Por favor ajudem pois sigo exatamente os tutoriais que encontro e não funciona. Ja tentei colocar virtual na frente do void inicializar do ferreiro tambem (por desespero) e nada. Utilizo windows 8.1 e creio que nao é do meu computador isso.