如何在C++中使用组合作为用户输入“cin”
问题描述:
我有三个C++类,InventoryItem,SalesPerson和Transaction。我正在使用组合在Transaction中使用InventoryItem和SalesPerson类。我想使用用户输入,而不是在构造函数中传递值,但我无法做到这一点。任何帮助将不胜感激。以下是我的C++文件。如何在C++中使用组合作为用户输入“cin”
#include<iostream>
#include<string>
using namespace std;
class InventoryItem {
private:
int stockNum; double price;
public:
InventoryItem(int, double);
void display(); };
InventoryItem::InventoryItem(int stkNum, double pr) {
stockNum = stkNum;
price = pr;
}
void InventoryItem::display() {
cout << "Item #" << stockNum << " costs $" << price << endl;
}
//SalesPerson class
class Salesperson {
private:
int idNum;
string name; public:
Salesperson(int, string); void display();
};
Salesperson::Salesperson(int id, string lastName) {
idNum = id;
name = lastName;
}
void Salesperson::display() {
cout << "Salesperson #" << idNum << " " << name << endl;
}
//Transaction(main class)
class Transaction {
private:
int transNum;
InventoryItem itemSold;
Salesperson seller;
public:
Transaction(int, int, double, int, string);
void display();
};
Transaction::Transaction(int num, int item, double pr,
int salesId, string name) : itemSold(item, pr),
seller(salesId, name) {
transNum = num;
}
void Transaction::display() {
cout << "Data for transaction #" << transNum << endl; itemSold.display();
seller.display();
}
int main() {
Transaction aSale(247, 782, 44.77, 512, "Richardson"); aSale.display();
return 0;
}
答
我张贴此答案而不是评论,因为我没有在我的手机上反引号。所以,你要像做
int main()
{
int x, y, z;
double f;
string name;
cin >> x >> y >> f >> z >> name;
Transaction(x, y, f, z, name);
return 0;
}
当然,你可以把cin
行成一个cin
每个变量和cout
说明什么,用户必须输入下一个。这看起来像cout
线,串要提示与用户这
int main()
{
int x, y, z;
double f;
string name;
cout << "Enter x: ";
cin >> x;
cout << "Enter y: ";
cin >> y;
cout << "Enter f: ";
cin >> f;
cout << "Enter z: ";
cin >> z;
cout << "Enter name: ";
cin >> name;
Transaction(x, y, f, z, name);
return 0;
}
替换字符串。
+0
谢谢。这对我有效。我怎样才能把输出标签为每个这些输入字段。例如,cout
+0
我编辑答案 – campovski
将参数传递给构造函数没有任何问题。这是你*应该*做的方式。用户输入应分开处理。这使得代码可以在输入类型改变时重用和测试(即用户输入vs文件vs模拟)。 –