未修改的矢量 - 总是空的

时间:2014-07-25 19:13:08

标签: c++ vector

问题:

首先我去了函数" nieuwe bestelling",这允许我填充向量。然后我用toevoegen函数打印矢量但它仍然是空的

- 我正在使用eclipse luna

提前致谢!

代码:

MAIN

int main(void)
{
tafel tafelObj;
short choice;


                    cout<<(" 1. nieuwe bestelling\n 2. tafel instellingen);
                    cin>>choice;

                    switch(choice)
                    {
                        case(1): cout<<"nieuwe bestelling"<<endl;
                        tafelObj.nieuwebestelling();
                        break;
                        case(2): cout<<"tafel instellingen"<<endl;
                        tafelObj.toevoegen();
                        break;
                    }
  }

。     / *      * tafel.cpp      *创建时间:2014年7月18日      *作者:亚历克斯      * /

#include "../tafel.h"
#include <vector>
#include <string>
#include <iostream>

tafel::tafel() {
    //constr
}

void tafel::nieuwebestelling()
{
        std::string besteld;
        static int tafelnummer=1;

        while(besteld!= "end")
        {
            std::cout<<"bestelling: ";
            std::getline (std::cin,besteld);
            bestellingen[tafelnummer].gerechten.push_back(besteld);
        }
        std::cout<<"---------------------------"<<std::endl;
}
void tafel::toevoegen()
{

    int tafelnummer=1;
    std::cout<<"----------------------------------"<<std::endl;
    std::cout<<"gewijzigd"<<std::endl;

    for(unsigned int i =0; i< bestellingen[tafelnummer].gerechten.size(); i++)
    {
        std::cout<<"i";
        std::cout<< bestellingen[tafelnummer].gerechten[i]<<std::endl;
    }
    std::cout<<"eind"<<std::endl<<std::endl;
    std::cin>>tafelnummer; //This is just here so i can clearly see, the point where everything should be printed
}

/*
 * tafel.h
 *
 *  Created on: 18 Jul 2014
 *      Author: alex
 */

#ifndef TAFEL_H_
#define TAFEL_H_

#define tafels 10

#include <iostream>
#include <vector>
#include <string>


class tafel {
public:
    static int i;
    struct bestelling  //elke tafel heeft een struct waarin alle gerechten enzo in staan. ide struct = ide tafel
    {
        std::vector<std::string>gerechten;
    }bestellingen[tafels];

    tafel();
    void nieuwebestelling();
    void toevoegen();
};


#endif /* TAFEL_H_ */

1 个答案:

答案 0 :(得分:1)

我无法使用以下main

复制您所描述的问题
int main()
{
   tafel t;
   t.nieuwebestelling();
   t.toevoegen();
   return 0;
}

但是,我将在您的代码中指出一个错误。在以下while循环中,

    while(besteld!= "end")
    {
        std::cout<<"bestelling: ";
        std::getline (std::cin,besteld);
        bestellingen[tafelnummer].gerechten.push_back(besteld);
    }

字符"end"将添加到bestellingen[tafelnummer].gerechten,因为您在besteld添加bestellingen[tafelnummer].gerechten后检查 while(true) { std::cout<<"bestelling: "; std::getline (std::cin,besteld); if ( besteld == "end" ) { break; } bestellingen[tafelnummer].gerechten.push_back(besteld); } 的值。

您可以将该代码块更改为:

{{1}}

删除该错误。