如何在C++中将一个具有字符串数据成员的类的对象传递给另一个类


#include <iostream>
using namespace std;
class fruit{
private:
string name;
int amount;
float price;
public:
void getData(){
cout <<"Enter name of fruit: ";
cin.ignore();
getline(cin, name);
cout <<"Enter amount: ";
cin >>amount;
cout <<"Enter price: $";
cin >>price;
cout <<endl;
}
void displayData(){
cout <<"Fruit: " <<name <<endl;
cout <<"In stock: " <<amount <<endl;
cout <<"Price: $" <<price <<endl;
}
};
class seller{
public:
void display(fruit& obj){
cout <<"You are a seller!" <<endl <<endl;
obj.getData();
}
};
class buyer{
public:
void display(fruit& obj){
cout <<"You are a buyer!" <<endl <<endl;
obj.displayData();
}
};
int main(){
int userChoice;
cout <<"Welcome to shop simulator!" <<endl;
while(true){
cout <<"Please select anything from the following:" <<endl;
cout <<"[0] Exit the program" <<endl;
cout <<"[1] Seller" <<endl;
cout <<"[2] Buyer" <<endl;
cin >>userChoice;
fruit obj1;
seller obj2;
buyer obj3;
switch(userChoice){
case 0:
_Exit(0);
break;
case 1:
obj2.display(obj1);
break;
case 2:
obj3.display(obj1);
break;
}
}
}

每当我试图在买方选项中输入水果及其属性,然后试图将其访问卖方选项时;金额";以及";价格;正在显示。(我尝试过使用字符数组,它有效,但当我使用字符串时,它不起作用(。

这三个变量:

fruit obj1;
seller obj2;
buyer obj3;

每次循环时都是从头开始创建的。因此,在第二次迭代中不会保留您在迭代1中输入的值。事实上,你得到了正确的priceamount只是一个巧合。

要快速解决此问题,只需将变量移到循环外即可:

fruit obj1;
seller obj2;
buyer obj3;
cout <<"Welcome to shop simulator!" <<endl;
while(true){

相关内容

最新更新