如何处理来自不同类的私有变量
How do you approach a private variable from a different class
void User :: buyApples(){
while(1){
cout<<"How many do you want to buy? Press 0 to quit.";cin>>qq;
if(qq==0)
return ;
if(qq<= f.getnumofApples()){
if(salary>=(qq*200)){
invofApples+=qq;
salary-=(qq*200);
showsalary();
}
else{
cout<<"Not enough money"<<endl;
void homescreen();
}
}
else{
cout<<"There's not enough Apples in Stock"<<endl;
continue;
}
}
}
这个代码是一个使用cin输入qq的市场。
我可以更改User
类中的薪资和私有变量。
但我也需要用int numofApples
来更改fruit类中的私有变量。如何更改numofApples
?
我似乎无法更改User类中的变量。当我试着把它从水果类改过来的时候,qq没有继续。我该怎么办?
如果您想从另一个类访问私有变量,您应该在该类中实现一个公共方法,例如get/set方法。
这样,您将保留变量的可见性
您可以允许User类访问Fruit类的私有变量,方法是将其声明为Fruit的friend
,即
class Fruit {
friend class User;
/* Rest of class */
}
问题是,这真的是你想要的吗?私有变量通常用于其他类不应更改的内容。
除非发布User
和Fruit
类,否则没有人可以回答。
在此之前,请思考一下面向对象编程的意义:将数据和行为封装到软件组件中。类中私有变量背后的思想是,您需要提供公共方法来更新它们。如果不提供方法,则意味着不希望在类外更改值。
将公共方法添加到拥有要更改的变量的类中。在代码中要更新的地方调用这些方法。
私有成员的目的是在您不希望它们被外部访问时防止它们被访问。如果您想允许访问,那么您必须为用户提供一种设置值的方法。下面是Fruit类上的setter方法的一个示例,该方法可以允许用户设置苹果的数量。
void Fruit::setNumberOfApples(int newNumApples)
{
numofApples = newNumApples;
}
相关文章:
- 对具有相同方法的不同类使用一个变量
- 在C++/虚幻引擎4中访问不同类中的静态变量
- 在不同类的对象之间共享变量 (C++)
- 如何将具有不同类(但相同基础)的对象存储在一个变量中
- 类和变量声明(相同类类型)
- C++-从不同的类中获取不同类中的变量集
- 创建可以包含不同类的变量
- 将变量指向来自不同类类型的成员函数
- 如何访问不同类的变量
- 是否可能有一个变量是对具有不同类标识符的模板类的引用?
- C++使用来自不同类的公共变量
- 具有相同类名的变量
- c++更新/更改来自不同类/变量的变量
- 如何在c++中访问定义在不同类中的变量
- 打印出存储在具有相同祖先的不同类的变量中的值
- 多线程——在不同类的方法之间传递变量
- 获取访问不同类中的顶级变量和方法
- 不同类中同名全局变量的双重初始化
- 如何处理来自不同类的私有变量
- 存储对具有不同类的对象成员变量的引用