私は3つのC++クラス、InventoryItem、SalesPerson、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;
}
コンストラクタにパラメータを渡す際には何も問題ありません。それがあなたが*それをやるべきである方法です。ユーザー入力は個別に処理する必要があります。これは、入力タイプが変更されたときにコードを再利用可能かつテスト可能にします(つまり、ユーザー入力対ファイル対モック)。 –