2017-08-31 8 views
0

私は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; 
    } 
+0

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

答えて

0

私は電話でバックティックを持っていないので、コメントではなく答えとして投稿しています。だから、あなたは、変数ごとに1 cincinラインを分割し、次は何のユーザを入力しなければならない上cout指示することができます。もちろん、

int main() 
{ 
    int x, y, z; 
    double f; 
    string name; 

    cin >> x >> y >> f >> z >> name; 

    Transaction(x, y, f, z, name); 
    return 0; 
} 

のような何かをしたいです。これは、あなたがユーザーにプロンプ​​トを表示したい文字列を含む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 << "最初の数字を入力する"; "2番目の数字"など –

+0

答えを編集しました – campovski

関連する問題