在向量中保存对象更改时出错

时间:2017-12-04 05:34:03

标签: c++ vector codeblocks push-back

代码:

#include <iostream>
#include <string>
#include <iomanip>
#include <fstream>
#include <vector>
#include "Skirts.h"
#include "Tops.h"
#include "Bottoms.h"
#include "Cart.h"
using namespace std;

void showMenu()
{
    cout << "WELCOME TO THE CLOTHING STORE!\n------------------------------\n\n";
    cout << "1. Shop for a top!" << endl;
    cout << "2. Shop for a pair of pants or shorts!" << endl;
    cout << "3. Shop for a skirt!" << endl;
    cout << "4. View your cart!" << endl;
    cout << "5. Quit the application!" << endl;
    cout << "Enter your option: ";
}

void input(Clothing &cl, Cart &c, int option)
{
    Tops t;
    Bottoms b;
    Skirts s;
    int option2;

    cl.ask();
    cout << "\nDo you want to add this item to your cart?";
    cout << "\n1. Yes\n2. No\n";
    cout << "Enter your option: ";
    cin >> option2;

    switch(option2)
    {
        case 1 :
            if(option == 1)
            {
                cl.print();
                c.addTop(t);
            }
            else if (option == 2)
            {
                cl.print();
                c.addBottom(b);
            }
            else if (option == 3)
            {
                cl.print();
                c.addSkirt(s);
            }
            cout << endl << endl;
            break;
        case 2: cout << "Okay!" << endl;
    }
}

int main()
{
    Tops t;
    Bottoms b;
    Skirts s;
    Cart c;
    int option;

    while (true)
    {
        showMenu();
        cin >> option;
        switch (option)
        {
            case 1: input(t, c, 1); break;
            case 2: input(b, c, 2); break;
            case 3: input(s, c, 3); break;
            case 4: cout << c << endl; break;
            case 5: return 0; break;
            default:  cout << endl;
        }
        cout << endl;
    }

    return 0;
}

ask函数要求用户输入关于每个对象的东西(Tops,Bottoms,Skirts;派生自类服装)。我正在尝试将此对象保存到该对象的向量中,该对象是类Cart的私有成员。这三个载体是

vector<Tops> tops;
vector<Bottoms> bottoms;
vector<Skirts> skirts; 

它们中的每一个都有自己的功能来将对象添加到向量中。但是,当我添加一些东西,然后尝试cout购物车(我重载了&lt;&lt;运营商的服装,购物车,上衣,裙子和下装)时,没有显示向量的更改。它几乎就像是在添加默认对象一样,因为每个变量(字符串)都是空白的。

如果我要求用户在对象中输入变量,然后我将对象添加到其对应的向量,然后cout推车,所有在main函数中,它都有效。但是,它不适用于这种情况,我不知道为什么。

我认为这是因为我正在询问有关衣服&amp; c的问题,然后我将这个新对象Tops t,Bottoms b或Skirt s添加到向量中,这与它无关。这几乎就像我需要将对象&amp; c设置为等于t,b或s。也许通过重载=运算符?我不知道......

请帮忙! :(

0 个答案:

没有答案