C ++:我对如何将用户输入添加到类的向量感到困惑

时间:2017-10-09 05:18:47

标签: c++

我有一类客户

class customer{
private:
    int customer_id;
    string customer_name;
public:
    customer(int id, string name);
   //get set functions for id and name etc..

然后,我有一个类是客户的集合,所以

class customers{
private:
    vector<customer> custVector;
public:
    void add_cust(int id, string name);
    void find_customer(int);
    printCust();
};

我想要添加的第一件事是客户,所以,我问用户

void customers::add_cust(int id, string name)
{
   int id;
   string name; 

   cout << "Enter customer ID: ";
   cin >> id;
   custVector.push_back(id);

   cout << "Enter customer Name: ";
   cin >> name;
   custVector.push_back(name);
}

是否可以将客户的ID和名称正确存储到矢量中?

我会编译我的程序,但它现在有很多其他错误,我甚至不知道从哪里开始。

但是我怎么打印信息? 我是否需要像这样的主要内容?

customers cust;

printCust(&cust);

打印出里面的信息?

3 个答案:

答案 0 :(得分:0)

要将客户添加到custVec,您需要做的就是(假设customer的构造函数有效):

void customers::add_cust(int id, string name)
{
   int id;
   string name; 

   cout << "Enter customer ID: ";
   cin >> id;

   cout << "Enter customer Name: ";
   cin >> name;
   custVector.push_back(customer(id,name));
}

要回答有关打印客户信息的问题,您可以拥有已定义的全局功能,最好是朋友功能(我将此作为研究对象),例如:

void printCust(const customer& cst)
{
   cout<<cst.getID()<<'\t'<<cst.getName();
}

答案 1 :(得分:0)

您对矢量的定义与您尝试添加的内容不匹配。考虑定义:

vector<customer> custVector;

添加到它的是:

custVector.push_back(id);custVector.push_back(name);

idintnamestring而非customer对象,您已定义vector包含装有。

要更正此问题,请在customer类中定义一个初始化customer对象的构造函数

customer(int id, string name) : customer_id(id), customer_name(name) { }

在您的添加功能中,您在获得输入后推送customer个对象:

custVector.push_back(customer(id, name));

还试着抓住一本好的初学者c ++书。

答案 2 :(得分:0)

add_cust()不负责提示用户输入。它正从调用者传递输入参数。因此,参数应该按原样使用。调用者应该根据需要处理提示用户,然后将输入值传递给add_cust()

不,你所展示的代码无论如何都不会起作用。 customer类的构造函数需要2个输入参数,但是您构建了2个单独的customer个对象,每个对象都有1个输入值。

使用更像这样的东西:

void customers::add_cust(int id, string name)
{
    custVector.push_back(customer(id, name));
}

然后调用者可以这样做:

customers cust;
...
int id;
string name;
cout << "Enter customer ID: ";
cin >> id;
cout << "Enter customer Name: ";
cin >> name;
cust.add_cust(id, name);

然后,要打印条目,只需调用已定义的类方法:

cust.printCust();

实施可能如下所示:

void customers::printCust()
{
    for(vector<customer>::iterator iter =  custVector.begin(); iter != custVector.end(); ++iter) {
        cout << "id: " << iter->getID() << ", name: " << iter->getName() << endl;
    }
}