我有一个AdventureGame类,它有一个构造函数。当我尝试创建一个新的AdventureGame对象时,我收到错误"没有匹配函数来调用' AdventureGame :: AdventureGame()'
这是我的一些类,构造函数和main。
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class AdventureGame
{
private:
public:
int playerPos;
int ogrePos;
int treasurePos;
string location;
AdventureGame(int ogre, int treasure)
{
playerPos = -1;
ogrePos = ogre;
treasurePos = treasure;
location = "";
};
.
.
. // other functions that I'm sure are irrelevant
.
.
int main()
{
AdventureGame game;
int numMoves = 0;
std::string move;
while (!game.isGameOver(game.playerPos))
{
game.printDescription(game.playerPos);
cout << "Which direction would you like to move? (forward, left, or right)" << endl;
cin >> move;
game.move(move);
numMoves++;
}
}
如何制作新游戏?
答案 0 :(得分:1)
您的构造函数需要两个参数来传递它们。
比如说:
AdventureGame游戏(3,5);
答案 1 :(得分:0)
您应该创建一个空构造函数:
AdventureGame()
{
playerPos = -1;
ogrePos = 0;
treasurePos = 0;
location = "";
};
或始终创建您的类,将ogrePos和treasurePos值传递给它:
AdventureGame game(0,0);
创建空的和参数化的构造函数可能是有意义的。
答案 2 :(得分:0)
您正在调用默认构造函数而不定义它。只需调用AdventureGame game;
即可调用未定义的构造函数AdventureGame() {};
。为了调用AdventureGame(int ogre,int treasure),在主函数中写AdventureGame game (arg1, arg2)
。
如果您使用的是C ++ 11,我建议最佳做法是始终使用此格式AdventureGame game {}
创建新对象。使用此格式,AdventureGame game {}
调用默认构造函数,AdventureGame game {arg1, arg2 ...}
调用其他相应的构造函数。
请注意,AdventureGame game ();
不会调用默认构造函数!!
享受编码!!
答案 3 :(得分:0)
缺少默认构造函数
AdventureGame()
{
playerPos = -1;
ogrePos = 0;
treasurePos = 0;
location = "";
}