【发布时间】:2017-09-01 14:29:44
【问题描述】:
我在上课时遇到问题。所以我有三个不同的类别:商店、客户和产品。在商店类中,我希望能够添加一个客户。问题是我需要添加客户的方式不遵循在 customer.h 中调用客户的方式。 这是我从 store.h 得到的:
void addCustomer(int customerID, string customerName);
在 customer.h 我有:
Customer();
Customer(string name, int customerID, bool credit);
在 customer.cpp 我有:
Customer::Customer(string name, int customerID, bool credit) :
name(name), customerID(customerID), credit(credit){}
在 store.cpp 我有以下内容:
void Store::addCustomer(int customerID, string customerName){
bool credit = false;
Customer addCustomer(int customerID, string customerName);
Customer* customer = new Customer(name = "Null", customerID = 0, credit);
customers.push_back(customer);
for (int i = 0; i < customers.size(); ++i) {
if (customers.at(i)->getID() == customerID){
throw runtime_error("Customer already added.");
}
}
}
如果客户已被添加到向量中,则会引发异常。其他一切都适用,例如所有三个类的所有 get 和 set 函数,但这一段代码不起作用,我什至没有收到错误,程序不会运行超过某个点。我做错了什么?
【问题讨论】:
-
不确定这是否是您要查找的问题,但是您首先将客户添加到向量中,然后如果在向量中找到它,则会引发运行时错误,这看起来有点奇怪。这不应该造成问题的唯一原因是,您在创建新客户时似乎忽略了
customerID(但改用0),但随后您试图根据该ID找到客户 -
也不清楚这行
Customer addCustomer(int customerID, string customerName);应该在该方法中做什么 -
通过阅读此代码,我觉得您可能需要read a book 而不是反复试验
-
如果客户已添加,我不想将客户添加到客户列表中。这就是 for 循环的原因。
-
我尝试使用从 customer.cpp 中获取的客户定义添加新客户,并将名称替换为 addCustomer 定义中给出的 customerName,然后将 customerID 替换为 addCustomer 定义中给出的客户 ID,然后我将信用默认为false,但它一直说信用未定义,尽管它在customer.h和customer.cpp中定义,我在store.cpp中包含了customer.h