Ich versuche, eine abstrakte Klasse TileMapView.h genanntObjekt der abstrakten Klasse Typ „DiamondMap“ ist
#pragma once
class TileMapView
{
public:
TileMapView();
~TileMapView();
virtual void computeDrawPosition(const int col, const int row, const int tw, const int th, float &targetx, float &targety) const = 0;
virtual void computeMouseMap(int &col, int &row, const int tw, const int th, const int mx, const int my) const = 0;
virtual void tileWalking(int &col, int &row, unsigned char direction) const = 0;
protected:
int width, height;
int posX, posY, currentX, currentY;
};
ich diese abstrakte Klasse an DiamondMap .h und CPP hatte zu verwenden implementiert, aber wenn Ich bin ein neues Objekt instant Ich erhalte die Nachricht: (Objekt der abstrakten Klassenart "DiamondMap" ist nicht erlaubt: reine virtuelle Funktion "TileMapView :: computeDrawPosition" hat keinen Overrider). Dies geschieht mit den drei Methoden (computeDrawPosition, computeMouseMap, tileWalking).
DiamondMap.h
#pragma once
#include "TileMapView.h"
class DiamondMap: public TileMapView
{
public:
DiamondMap();
~DiamondMap();
void computeDrawPosition(const int col, const int row, const float tw, const float th, float &targetx, float &targety);
void tileWalking(int &col, int &row, unsigned char direction);
void computeMouseMap(int &col, int &row, const int tw, const int th, const int mx, const int my);
};
main.cpp
#include <Windows.h>
#include <GL/gl.h>
#include <GL/glut.h>
#include "DiamondMap.h"
TileMapView *view;
...
view = new DiamondMap();
Sie sind nicht verpflichtet, Schlagwort überschreiben, aber schauen Sie sich tief in Ihrem Basis-Header, wie diese Signaturen von reinen virtuellen Funktionen sind und in Ihrem abgeleiteten – Raindrop7