这种错误正在发生,我不知道为什么。 首先,我想制作一个BattleShip游戏,我已经有了一些课程,我需要实现一些功能。我从画板开始,但我的时间非常糟糕。如果有人对此感兴趣或做过这件事,可以给我一些帮助,我会非常感激。这是我学期的最后一个项目,我的脖子上有一根绳子。
这就是问题所在。
我有我的董事会成员
class Board {
public:
Board(const string &filename);
//bool putShip(const Ship &s);
void moveShips();
//bool attack(const Bomb &b);
void display()const;
void show()const;
void initializeGrid();
private:
int numLines, numColumns;
//vector <Ship> ships;
vector <vector<int> > board;
};
和我的玩家类
class Player{
public:
Player(string playerName, string boardFileName);
void showBoard() const;
//Bomb getBomb() const;
//void attackBoard(const Bomb &b);
private:
string name;
Board board;
};
我想通过从txt中读取他的尺寸来创建一个板(尚未完成)。
但是当我这样做时:
Player::Player(string playerName, string boardFileName){
name = playerName;
board = boardFileName;
}
和这个
void Player::showBoard() const{
Board b01;
}
我收到以下错误:
没有匹配函数来调用'Board :: Board()'
答案 0 :(得分:2)
您已声明以下构造函数:
Board(const string &filename);
因此,未生成默认构造函数。这就是您在以下行中收到错误的原因:
Board b01; // default ctor does not exist
答案 1 :(得分:0)
您应该为Board
类定义一个空构造函数,或者在Board(const string &filename);
方法中定义b01
时使用现有的showBoard
构造函数。
答案 2 :(得分:0)
发生错误消息,因为类Board没有默认构造函数。然而,似乎它不需要具有默认构造函数。
只需按以下方式更改类Player的构造函数的定义
Player::Player(string playerName, string boardFileName)
: name( playerName ), board( boardFileName )
{
}
对于成员函数showBoard,则无需创建本地对象b01,因为您似乎必须输出与该类的数据成员板对应的板。或者您可以使用复制约束器来创建本地对象,例如
void Player::showBoard() const
{
Board b01( board );
}