首页 > 解决方案 > 将特定字段从向量复制到另一个向量

问题描述

我正在尝试为 C++ 程序制作一个篮子系统,我的任务是从一个单独的类中的一个向量中获取价格,并将该价格复制到新的“篮子”向量中。我尝试了许多解决方法,但我已经得到它返回标识符未定义的错误消息,即使向量在类中是公共的。

头文件:

class Item {
private:
    int _ItemNo;
    string _category, _description;
    double _price;
    double _VAT = _price*0.2;
    double _subtotal = _price + _VAT;

};

class ItemMenu {
public:
    vector<Item> _Items;

    ItemMenu();
    void displayMenu();
};

//Class for ordering from the menu
class Ordering {
    private:
            vector<Item> _Basket;
            int quantity;
            double total;
    public:
            Ordering();
            Ordering(int quantity, double total);
            void placeOrder(const vector<Item> &Items);

实现文件:

ItemMenu::ItemMenu() {
    ifstream fin("Menu.txt");
            if(fin) {
                    while(!fin.eof()) {
                            string _ItemNoTemp;
                            getline(fin, _ItemNoTemp, ':');
                            int _ItemNo = stoi(_ItemNoTemp);
                            string _category;
                            getline(fin, _category, ':');
                            string _description;
                            getline(fin, _description, ':');
                            string _priceTemp;
                            getline(fin, _priceTemp);
                            double _price = stod(_priceTemp);
                            if(!fin.eof()) {
                            _Items.push_back(Item(_ItemNo,
                            _category, _description, _price));
                            };
                            fin.peek();
                    }
                    fin.close();
                }

}

//Method to display the each item
void ItemMenu::displayMenu() {
    for(int i = 0; i < _Items.size(); ++i) {
            _Items[i].display();
    }
    cout << endl;
}
Ordering::Ordering() {          }

void Ordering::placeOrder() {
    int select;
    cout << "Please enter an item number: ";
    cin >> select;
    Item I;
    i._subtotal = _Items[select]._subtotal;
    _Basket.push_back(i);
}

篮子向量位于排序类中,我试图获取项目的小计,以便我可以通过对向量中的值求和来计算总数。这也是 _Items 未定义的错误出现的地方。我是编程新手,还没有真正找到一个明确的来源,说明向量如何在类之间工作,具体取决于它们的声明位置。

标签: c++vector

解决方案


像这样的东西应该工作

void Ordering::placeOrder(
      const vector<Item>& items ) {
    int select;
    cout << "Please enter an item number: ";
    cin >> select;
     
     cItem i;
     i._price = items[ select ]._price;
    _Basket.push_back( i );
}

推荐阅读