我试图采用一种叫TileMapView.h对象是不允许
#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;
};
抽象类
我已经实现在DiamondMap的.h和.cpp这个抽象类,但是当我实例化一个新的对象,我收到消息:(不允许使用抽象类类型“DiamondMap”的对象:纯虚函数“TileMapView :: computeDrawPosition”没有覆盖)。这发生在三种方法(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();
你没有义务添加关键字重写,但深深地看你的基地标题如何这个纯虚函数的签名是在你的派生 – Raindrop7