更改向量中对象的私有变量
Changing private variable of object in a vector
我正在尝试更改下面显示的卡类中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;
};
card.cpp:
int Card::getRank() {
return rank;
}
void Card::changeRank(int change) {
rank = change;
}
这是玩家类:
class Player {
private:
vector<Card> playerHand;
public:
Card getCard(int index);
};
player.cpp:
Card Player::getCard(int index) {
return playerHand[index];
}
这是经销商.cpp文件,实际上是致电的文件:
if (oneOrEleven == 11) {
player.getCard(i).changeRank(11);
cout << "The ace will have a value of 11" << endl;
}
此代码正在调用方法" changerank((",它只是不会更改卡对象中的"等级"的值。
我在做什么错?
您应该将 Player::getCard
从返回返回变为返回。例如
Card& Player::getCard(int index) {
return playerHand[index];
}
ohterwise,您将始终在返回的副本上进行修改,这与向量中的原始元素无关。
此代码正在调用方法" changerank((",它只是没有更改 卡对象中"等级"的值。
通过参考将getCard的函数声明更改为,即:
Card& getCard(int index);
您立即获得函数声明的方式,它正在返回卡对象 bial value ,而不是引用。
当您按值返回时,您将返回对象的副本,而不是实际对象本身。
相关文章:
- 你能重载对象变量名本身返回的内容吗
- 将包含C样式数组的对象初始化为成员变量(C++)
- 将地址分配给本地指针后,公共对象的变量将消失
- 为什么我们再次从结构对象创建结构变量?
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- 从变量对象指向基对象
- C++ - 我可以创建编译时变量对象吗?
- 动态数组添加元素而不创建结构变量/对象
- Visual Studio C++ 编译器在局部变量对象上的奇怪行为
- 其中定义函数的静态局部变量对象
- QT良好的全局变量/对象处理
- r 值的匿名变量对象与真实对象
- QT 测试 - 变量/对象失去价值
- 访问私有变量对象
- C++访问具有相同名称的变量/对象的命名空间中的全局变量/对象
- C++-访问全局变量对象
- 表达式必须具有类类型:c++,将实例变量对象作为指针传递(点表示法参数)
- C++变量/对象和堆内存管理
- 如何在每次迭代中创建一个新变量/对象的循环
- 初始化现有变量/对象的新构造函数