【发布时间】:2020-03-07 14:22:05
【问题描述】:
我正在用随机多米诺骨牌填充两个玩家的手,没有问题。当我将结构发送到另一个类时,我不能再访问玩家的手了。
using namespace std;
struct player {
int playerNum;
vector < pair <int, int>> hand;
};
vector < pair <int, int>> availablePieces;
void Player::createHand(vector < pair <int, int>> &multiVector, player* player) {
srand(time(NULL)); // rand seed
int ranNumb;
//fill players' hand
for (int i = 0; i < 10; i++) {
ranNumb = rand() % multiVector.size();
player[0].hand.push_back(multiVector[ranNumb]);
multiVector.erase(multiVector.begin() + ranNumb);
ranNumb = rand() % multiVector.size();
player[1].hand.push_back(multiVector[ranNumb]);
multiVector.erase(multiVector.begin() + ranNumb);
}
}
setAvailablePieces(multiVector);
void Player::createPlayers(vector < pair <int, int>>& multiVector) {
struct player* domiPlayer = new struct player[2];
domiPlayer[0].playerNum = 1;
domiPlayer[1].playerNum = 2;
createHand(multiVector, domiPlayer);
}
Game gameObj;
gameObj.API(player, availablePieces);
游戏标题:
using namespace std;
class Game
{
public:
void API(struct player* player, vector < pair <int, int>> &availablePieces);
private:
void playGame(player* player, vector < pair <int, int>>& availablePieces);
};
游戏类:
void Game::playGame(player* player, vector < pair <int, int>>& availablePieces) {
cout << player[0].hand[0].first << endl;
}
void Game::API(player* player, vector < pair <int, int>> &availablePieces) {
playGame(player, availablePieces);
}
在函数 playGame 中,我无法访问单个玩家的手牌。我收到错误:表达式必须是指向完整对象类型的指针。
【问题讨论】:
-
欢迎来到 Stack Overflow!请将您的问题editminimal reproducible example 或SSCCE (Short, Self Contained, Correct Example)
-
您在
createPlayers中创建了两个player对象。它们在函数结束时泄漏,因为您不返回或存储它们。此外,同时具有player和Player类型会令人困惑。 -
由于该问题至少与您的包含内容有关,很遗憾您选择不向我们展示其中任何一个。发布实际的minimal reproducible example,而不是精心挑选的错误代码子集