首页 > 解决方案 > 类不存储向量值

问题描述

我遇到的问题是我将值存储到我的向量中并将它们连接到一组向量中。但是,当我回到存储值的班级时,它们就消失了。VS 然后抛出一个通用错误。请在下面找到我的代码。

#include <vector>
#include <conio.h>
#include <cctype>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
void Train_Time_Entries();

struct
{
    int iOption, iCount = 0;
    int myContNo = -1;
    int fDecide = -1;
    string AdminUser, AdminPass;
    vector <string> AdminUsers{ "John1966", "Christine55", "BlakeBennett74", "SarahHarding93", "Connor1987" };
    vector <string> AdminPasswords{ "KalEL", "HenryDog6", "WesternRailway21", "Railwayssince89", "Budweisersaregood" };
    vector <string> sAdmins;
    string sLocation, sArrive, sDepart, sDay;
    bool bAdmin = true, bAddEnt = true, bMenu = true, bMenu1 = true;

}iop, admus, admpa, AdminUsers, AdminPas, bAdm, sLoc, sArr, sDep, bAdd, myCo,fde, bMe, bMen, sAds,sDa,iCou;

//****************Admin Only********************
class Train_Time_Ent
{
public:
    vector<string> sLocations;
    vector<string> sDay;
    vector<string> sArrive;
    vector<string> sDepart;
    vector<string> sBundle;
};

//*****************Admin Only*******************
void Train_Time_Entries() 
{
    system("cls");
    Train_Time_Ent myobjs;

    do
    {
        cout << "           Train Entries(Admin View Only)\n";

        for (int i = 0; i < 5; i++)
        {
            cin.ignore();
            cout << "Please enter a train location: " << flush;
            getline(cin, sLoc.sLocation);

            myobjs.sLocations.push_back(sLoc.sLocation + "\n");

            cout << "Enter a day of the week for times: " << flush;
            cin >> sDa.sDay;

            myobjs.sDay.push_back(sDa.sDay + "\n");

            do
            {
                cout << "Now enter a Train Arrive time for this location: " << flush;
                cin >> sArr.sArrive;

                myobjs.sArrive.push_back(sArr.sArrive + "\n");

                cout << "Would you like to add any more arrival times? Y=1 N=2: " << flush;
                cin >> iop.iOption;

                if (iop.iOption == 2)
                {
                    cout << "Okay Thank you\n";
                    break;
                }

            } while (iop.iOption == 1);
            
            do
            {
                cout << "Now enter a Train Departure time for this location: " << flush;
                cin >> sDep.sDepart;

                myobjs.sDepart.push_back(sDep.sDepart + "\n");

                cout << "Would you like to enter more departure times? Y=1 N=2: " << flush;
                cin >> iop.iOption;

                if (iop.iOption == 2)
                {
                    cout << "Okay Thank you\n";
                    break;
                }
            } while (iop.iOption == 1);

            cout << "Would you like to make any other entries? Y = 1 N = 2: " << flush;
            cin.ignore();
            cin >> iop.iOption;

            if (iop.iOption == 1)
            {
                bAdd.bAddEnt = true;
                fde.fDecide++;
            }
            else if (iop.iOption == 2)
            {
                bAdd.bAddEnt = false;
                fde.fDecide++;
                break;
            }
        }
    } while (bAdd.bAddEnt == true);

    // For future entries this needs to be checked so the values are set accordingly
    for (int i = myCo.myContNo; myCo.myContNo <= fde.fDecide;)
    {
        myCo.myContNo++;
        if (myCo.myContNo <= fde.fDecide)
        {
            myobjs.sBundle.push_back(myobjs.sDay[myCo.myContNo] + myobjs.sLocations[myCo.myContNo] + myobjs.sArrive[myCo.myContNo] + myobjs.sDepart[myCo.myContNo]);
        }
    }

    cout << myobjs.sBundle[0];
    myCo.myContNo--;
    bMe.bMenu = true;
    cout << "Exiting to Admin Menu...\n";
    _getch();

    
}
void Concatenate_Admins()
{
    for (int i = 0; i < AdminUsers.AdminUsers.size(); i++)
    {
        sAds.sAdmins.push_back(AdminUsers.AdminUsers[i] + AdminPas.AdminPasswords[i]);
    }
}
int main()
{
    do
    {
        system("cls");
        cout << "               Western Railway\n";
        cout << "Please choose from one of the following\n";
        cout << "1:: Train Times\n";
        cout << "2:: Make a Reservation\n";
        cout << "3:: Make a Cancellation\n";
        cout << "4:: Reserved Trains\n";
        cout << "5:: Admin Login\n";
        cout << "6:: Quit\n";
        cin >> iop.iOption;

        switch (iop.iOption)
        {
        case 1: 
            iop.iOption = 1;
            //Train_Times();
        case 2:
            iop.iOption = 2;
            //Make_A_Reservation();
        case 3:
            iop.iOption = 3;
            //Make_A_Cancellation();
        case 4:
            iop.iOption = 4;
            //Reserved_Trains();

        case 5:
            iop.iOption = 5;
            Concatenate_Admins();
            // Look into an option to add more admin logins after authorization of login (New Employees)
            // also look into updating times for various locations
            do
            {
                system("cls");
                cout << "       *******Admin Login*******\n";
                cout << "Please enter Authorised credentials below;\n";
                cout << "Username: " << flush;
                cin >> admus.AdminUser;
                cout << "Password: " << flush;
                cin >> admpa.AdminPass;

                iCou.iCount++;
                if (find(sAds.sAdmins.begin(), sAds.sAdmins.end(), admus.AdminUser + admpa.AdminPass) != sAds.sAdmins.end())
                {
                    cout << "Successfully Logged in...\n";
                    bAdm.bAdmin = false;
                }
                else if (find(sAds.sAdmins.begin(), sAds.sAdmins.end(), admus.AdminUser + admpa.AdminPass) == sAds.sAdmins.end())
                {
                    cout << "Entry not recognized...\n";
                    cout << "No " << iCou.iCount << " of 3 Attempts\n";
                    bAdm.bAdmin = true;

                    if (iCou.iCount == 3)
                    {
                        cout << "Too many attempts made\n";
                        cout << "Exiting to main menu...\n";
                        bAdm.bAdmin = false;
                    }
                }
                _getch();

            } while (bAdm.bAdmin == true);

            do
            {
                if (iCou.iCount <= 3)
                {
                    system("cls");
                    cout << "       *******Admin Mode*******\n";
                    cout << "Please choose from one of the following; \n";
                    cout << "Option 1: Train Time Entries\n";
                    cout << "Option 2: View Reserved Lists\n";
                    cout << "Option 3: View Passenger Info\n";
                    cout << "Option 4: Return to main menu\n";
                    cin >> iop.iOption;

                    switch (iop.iOption)
                    {
                    case 1:
                        iop.iOption = 1;
                        Train_Time_Entries();
                        bMe.bMenu = true;
                    case 2:
                        iop.iOption = 2;
                        //Reserved_Lists();
                        bMe.bMenu = true;
                    case 3:
                        iop.iOption = 3;
                        //Passenger_Info();
                        bMe.bMenu = true;
                    case 4:
                        iop.iOption = 4;
                        cout << "Returning to Main Menu...\n";
                        bMe.bMenu = false;
                        break;
                        _getch();
                    }
                }
                else if (iCou.iCount > 3)
                {
                    bMen.bMenu1 = true;
                    main();
                }
            } while (bMe.bMenu == true);

            bMen.bMenu1 = true;
            break;

        case 6:
            iop.iOption = 6;
            cout << "Exiting Application...\n";
            bMen.bMenu1 = false;
            break;
        }
    } while (bMen.bMenu1 == true);

    return 0;
    
}

标签: c++oop

解决方案


推荐阅读