无法在不同条件下访问我的矢量变量

时间:2018-04-14 16:08:02

标签: c++ if-statement pass-by-reference

我正在尝试在一个条件下创建对象并在另一个条件下列出这些对象,但它不起作用。

void fillVector(vector<Account>& newcreateAccObj){ 

    string name;
    string password;

    cout<<"Enter your surname:"<<endl;
    cin>>name;
    cout<<"Enter your password:"<<endl;
    cin>>password;

    Account newAcc(name,password);
    newcreateAccObj.push_back(newAcc);
    cout<<endl;     
}

这很好用。

void printVector(vector<Account>& newcreateAccObj){

    unsigned int size=newcreateAccObj.size();

    for(unsigned int i=0;i<size;i++){

        cout<<"Account"<<i+1<<endl;
        cout<<"-----------"<<endl;
        newcreateAccObj[i].getId();
        newcreateAccObj[i].getName();
        cout<<endl;     
    }   
}

当我在相同条件下执行这两个函数时,这也可以正常工作。

但是当我这样做时:

int main(){
int whileCondition=-1;
string girisSecim;

vector<Account>  createAccObj;


while(whileCondition==-1){

    cout<<"--------------------------------------------------------"<<endl;
    cout<<"??????????????????????????????????????????????????????"<<endl;
    cout<<"1-create acc                     2-transferring"<<endl;
    cout<<"3-enter acc                      4-exit"<<endl;
    cout<<"--------------------------------------------------------"<<endl;


    cin>>girisSecim;



        if(girisSecim=="1"){

            fillVector(createAccObj);  //BURDA OBJE OLUSTURULUYOR

        }

        else if(girisSecim=="2"){


        printVector(createAccObj);

        }

        else if(girisSecim=="3"){





        }

        else if(girisSecim=="4"){
            return 0;

        }

        else{
            cout<<"Hatali tuslama."<<endl;
        }


        whileCondition=0;

        cout<<"Programa devam etmek icin -1'i, cikmak icin herhangi bir seyi tuslayiniz."<<endl;

        cin>>whileCondition;
}

编辑:我编辑了主要部分。

我首先选择选项1。我创建了我的对象并返回选择菜单,之后我选择了选项2,它给了我一个空白输出。

1 个答案:

答案 0 :(得分:-1)

遵循createAccObj的生命周期。

好像你没有向两个函数发送相同的向量。

我猜测,你的代码看起来像这样:

cout

这里,在每次迭代时,都会创建新的矢量,因此当您尝试打印时,会打印空矢量。 如果是这种情况,只需删除循环外的矢量减速度。

编辑: 再次查看代码,似乎忘记了newcreateAccObj[i].getId();中的Android.App.AlertDialog.ThemeDeviceDefaultLight和newcreateAccObj [i] .getName();