我有一类客户
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);
打印出里面的信息?
答案 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);
id
为int
且name
为string
而非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;
}
}