gpt4 book ai didi

c++ - 更改 vector 中对象的私有(private)变量

转载 作者:行者123 更新时间:2023-11-30 02:25:22 24 4
gpt4 key购买 nike

我正在尝试更改我的 Card 类中的 int 变量的值,如下所示:

class Card {
public:
enum Suits {diamond, heart, club, spade};
Card (int _rank, Suits _suit) : rank{_rank}, suit{_suit} {}
int getRank();
void changeRank(int change);

private:
int rank;
Suits suit;
};

卡片.cpp:

int Card::getRank() {
return rank;
}

void Card::changeRank(int change) {
rank = change;
}

这是播放器类:

class Player {
private:
vector<Card> playerHand;

public:
Card getCard(int index);
};

播放器.cpp:

Card Player::getCard(int index) {
return playerHand[index];
}

这里是实际调用的 dealer.cpp 文件:

if (oneOrEleven == 11) {
player.getCard(i).changeRank(11);
cout << "The ace will have a value of 11" << endl;
}

这段代码正在调用方法“changeRank()”,它只是没有改变 Card 对象中“rank”的值。

我做错了什么?

最佳答案

您应该将 Player::getCard 从按值返回更改为按引用返回。例如

Card& Player::getCard(int index) {
return playerHand[index];
}

否则,您将始终修改返回的拷贝,这与 vector 中的原始元素无关。

关于c++ - 更改 vector 中对象的私有(private)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275134/

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