将成对向量与用户定义的 class 对象一起使用

Using vector of pairs with user-defined class objects

我正在尝试编写一个棋盘游戏程序(使用 C++)。我有 2 个 classes,分别叫做 MoveBoard。在我的 Board 构造函数中,我使用了 pair<char, Move>。它似乎无法识别 class Move,即使我在头文件中 #include 它也是如此。我收到错误消息:"missing ',' before identifier 'coord' " 和“'coord':未声明的标识符”。这是我的代码:

Move.h:

#include <utility>
#include <vector>

using namespace std;

class Move{
    private:
        pair<int,int> coordinates;
    public:
        Move(int,int);
};

Move.cpp:

#include "Move.h"

Move::Move(int x, int y){
    coordinates.first = x;
    coordinates.second = y;
}

Board.h:

#include "Move.h"

class Board{
    private:
        vector<pair<char, Move> > board_state;
    public:
        Board(vector<pair<char, Move> >);
};

Board.cpp:

#include "Board.h"

Board::Board(vector<pair<char P, Move coord> > state){
     board_state = state;
}

pair 的模板参数只能是类型。所以 vector<pair<char P, Move coord>> 应该读作 vector<pair<char, Move>>.