主要就是在ChessFace这个类里面那个Piece* BoardFace[9][8]这里
我把重点的地方给大家看看求帮助。
ChessFace.h
#pragma once
#include "Piece.h"
using namespace Chess;
class ChessFace {
public:
// 从0开始
Piece* BoardFace[9][8];
// 将棋局内所有棋子全部析构
//void resetAllPiece(void);
};
Piece.h
#pragma once
#include "BaseDef.h"
using namespace Chess;
using namespace std;
typedef unsigned char BYTE;
// 包含Piece基类
namespace Chess {
// 棋子基类
class Piece {
protected:
// 棋子是哪一方的
// 红 — 黑
Power PiecePower;
// 棋子的坐标(位置)
// 如果x大于9就是被吃了
Coord PiecePos;
// 棋子的初始位置
virtual const Coord InitialPos(void)const = 0;
// 指针指向目前棋盘上的局势
// 连接了各个棋子的联系
//static ChessFace* Situation;
public:
// XY坐标分开的构造函数
Piece(Power piecepower);
// 复制构造函数
Piece(const Piece& piece);
// 析构函数
virtual ~Piece();
// 设置棋局
//static void setChessFace(ChessFace* situation);
// 是否已经被吃了
inline bool isEaten(void)const;
// 获得棋子是红方还是黑方的
Power getPiecePower(void)const { return this->PiecePower; }
// 获得棋子现在的位置
Coord getPiecePos(void)const { return this->PiecePos; }
#pragma warning(disable : 4290)
// 到达指定坐标
void moveTo(Coord coord)throw(Exceptions);
// moveTo的重载
void moveTo(BYTE xcoord, BYTE ycoord)throw(Exceptions);
// 有没有过河
bool overRiver(void)const;
// 过河的Y坐标
// 可以到达的坐标
// 超过就是过河了
BYTE coordyOverRiver(void)const;
// 指定X坐标与棋子的距离
BYTE xCoordDistanceFrom(BYTE xcoord)const;
// 指定Y坐标与棋子的距离
BYTE yCoordDistanceFrom(BYTE ycoord)const;
// 当被其他棋子吃掉时调用此方法
inline void beingEaten(void);
// 吃其他棋子的时候
// 会调用那个对象被吃掉的方法
// 并且会移动到吃掉的地方
// 如果是不能吃掉的就会抛出异常
void eatPiece(Piece& PieceEaten)throw(Exceptions);
// 返还棋子的名字
virtual inline wchar_t getPieceName(void)const = 0;
// 返还棋子的编号
virtual inline NumberPiece getPieceNum(void)const = 0;
// 判断可不可以走到指定的坐标(不计算目的地是否有其他棋子的前提下)
virtual bool canMove(Coord coord)const = 0;
// 返还所有可以走的坐标(不计算目的地是否有其他棋子的前提下)
// 实例化时就要实现其他棋子的干扰
virtual vector<Coord> canMove(void)const = 0;
// 返还可以吃到的坐标
//virtual vector<Coord> canEat(const ChessFace& situation)const = 0;
// static
// 判断坐标是否在棋盘内
static inline bool insideBoard(Coord coord);
};
}
主函数我没有实现什么只是看看能不能通过编译
main.cpp
#include <iostream>
#include "Piece.h"
using std::cout;
using std::endl;
using namespace Chess;
int main() {
cout << "Hello World\n";
}
我用的Visual Studio
到底哪里出错了?
我搞不懂求助!