【发布时间】:2020-12-07 22:30:32
【问题描述】:
背景:
我创建了一个玩家类,我想问用户有多少玩家要玩这个游戏?根据用户输入,我正在尝试创建播放器类的许多实例。但是,我使用以下链接来帮助我:
Create object using user input
http://www.cplusplus.com/forum/beginner/197342/
所以,我尝试了他们的解决方案:
#include "Player.h"
int main() {
int totalPlayers = -1;
cout << "Enter total number of players: ";
while ((totalPlayers < 1) && (totalPlayers > 5)) {
cout << "How many players will be playing? (1-5): ";
cin >> totalPlayers;
}
vector<Player> players(totalPlayers);
system("pause");
}
我收到错误:16LinearChess.exe 中 0x763F40B2 处的未处理异常:Microsoft C++ 异常:内存位置 0x003BF690 处的 std::length_error。
所以,我用谷歌搜索了这个确切的错误并找到了这个链接:Error : std::length_error at memory location
所以,首先他的代码与我的代码无关,但错误是一样的。我不明白答案,但我认为我必须使用堆内存创建实例。所以我试了一下:
#include "Player.h"
int main() {
int totalPlayers = -1;
cout << "Enter total number of players: ";
while ((totalPlayers < 1) && (totalPlayers > 5)) {
cout << "How many players will be playing? (1-5): ";
cin >> totalPlayers;
}
vector<Player> *players = new Player(totalPlayers);
delete[] players;
system("pause");
}
我收到两个错误:
严重性代码描述项目文件行抑制状态
错误(活动)E0144 类型“玩家 *”的值不能用于初始化类型“std::vector
严重性代码描述项目文件行抑制状态
错误(活动)E0289 构造函数“Player::Player”的实例与参数列表不匹配 16LinearChess D:\Keshav\Programming Languages\C++\Beginner\01 Michael Dawson\16LinearChess\LinearChess.cpp
这是我的 Player 类:
#include <iostream>
class Player : public Board {
protected:
int m_position;
Log logger;
int m_playerNumber;
public:
static int m_numberOfPlayers;
Player() :m_position(0) {
++m_numberOfPlayers;
m_playerNumber = m_numberOfPlayers;
}
void m_SetPlayerPosition(int &position) {
if ((position < 0) || (position > 100)) {
m_position = 0;
logger.Error("Position cannot be less than or greater than 100. Your position has been reset to 0 because you fell out of the map.");
}
else {
m_position = position;
}
m_SetBoardPosition(m_position, m_numberOfPlayers); // update the position on the board.
}
friend ostream &operator << (ostream &os, Player &player) {
os << "Player position on board: " << player.m_position << "\nPlayer Number: " << player.m_playerNumber << '\n';
return os;
}
};
int Player::m_numberOfPlayers = 0; // initializing total number of players.
谢谢!
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。