gpt4 book ai didi

c++ - 从单独的函数更改 QVector 变量

转载 作者:太空宇宙 更新时间:2023-11-04 12:01:09 28 4
gpt4 key购买 nike

我在 deck.cpp 中有一个函数,它从一副牌中随机发牌:

QVector<card> Deck::deal_rand_cards(QVector<card> vDeck, int quantity)
{

QVector<card> vDealt;
int deckSize = vDeck.size();
card randCard;

qsrand(QTime::currentTime().msec());


for (int i=0;i<quantity;i++)
{
int rn=rand()%deckSize;
randCard = vDeck[rn];
qDebug()<<vDeck.size();

vDealt.append(randCard);

vDeck.remove(rn);
}

return vDealt;
}

我的问题是,每次从 mainwindow.cpp 运行函数时,vDeck 包含完整的牌组,而不是我用函数删除的减去发牌的牌组。

如果我两次发 3 张牌,调试打印:

54 53 52 54 53 52

如何更新函数内被其他函数和其他文件使用的变量?我感觉涉及到指针,但我仍然不太理解这个概念。

谢谢

这里是 deck.h

#ifndef DECK_H
#define DECK_H
#include <QString>
#include <QVector>

struct card
{
QString suit;
QString color;
int rank;
};

class Deck
{

private:
int size;
int jokers;

public:
QVector<card> build_deck(int deckSize, int jokers);
QVector<card> deal_rand_cards(QVector<card> vDeck, int quantity);

};

#endif // DECK_H

最佳答案

您需要将 vDeck 的引用传递给 deal_rand_cars 函数,目前您正在处理 vDeck 的拷贝。

QVector<card> deal_rand_cards(QVector<card> &vDeck, int quantity);
^^^ pass by reference

如果您使用引用作为参数,该函数将使用原始数据而不是拷贝。

关于c++ - 从单独的函数更改 QVector 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077731/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com