如何处理来自不同类的私有变量

How do you approach a private variable from a different class

本文关键字:同类 变量 何处理 处理      更新时间:2023-10-16
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 */
}

问题是,这真的是你想要的吗?私有变量通常用于其他类不应更改的内容。

除非发布UserFruit类,否则没有人可以回答。

在此之前,请思考一下面向对象编程的意义:将数据和行为封装到软件组件中。类中私有变量背后的思想是,您需要提供公共方法来更新它们。如果不提供方法,则意味着不希望在类外更改值。

将公共方法添加到拥有要更改的变量的类中。在代码中要更新的地方调用这些方法。

私有成员的目的是在您不希望它们被外部访问时防止它们被访问。如果您想允许访问,那么您必须为用户提供一种设置值的方法。下面是Fruit类上的setter方法的一个示例,该方法可以允许用户设置苹果的数量。

void Fruit::setNumberOfApples(int newNumApples) 
{ 
    numofApples = newNumApples; 
}