【发布时间】:2015-12-06 16:33:57
【问题描述】:
#pragma once
#include <string>
#include <iostream>
using namespace std;
class Chess_tool
{
public:
Chess_tool(string color, char name);
virtual bool legal_movement(int source[], int dest[]) const = 0;
private:
string _color;
char _name;
};
我正在尝试创建国际象棋游戏,所以我为国际象棋工具创建了抽象类(皇后、国王、车...) 我还创建了 king 工具来检查我的代码:
#pragma once
#include "Chess_tool.h"
class King : Chess_tool
{
public:
King(string color, char name);
virtual bool legal_movement(int source[], int dest[]);
};
我创建了 game_board 类:
#pragma once
#include "Game_board.h"
#include "Chess_tool.h"
#include <iostream>
#define BOARD_SIZE 8
using namespace std;
class Chess_tool;
class Game_board
{
public:
Game_board();
~Game_board();
void move(string panel);
protected:
Chess_tool* _board[BOARD_SIZE][BOARD_SIZE];
};
问题就在这里,当我尝试将对象添加到矩阵时,它会显示错误: 1 IntelliSense:不允许抽象类类型“King”的对象: 纯虚函数“Chess_tool::legal_movement”没有覆盖器
#pragma once
#include "Chess_tool.h"
#include "Game_board.h"
#include "King.h"
using namespace std;
enum Turn { WIHTE, BLACK };
class Manager : Game_board
{
public:
Manager();
~Manager();
virtual bool legal_movement(int source[], int dest[]) const = 0;
};
....
#include "Manager.h"
Manager::Manager()
{
_board[0][0] = new King();
}
【问题讨论】:
-
尝试编译你的代码。 IntelliSense 错误可能是由于代码尚未编入索引。
-
你知道你在使用私有继承吗?