这是我在库存中添加CD的代码。我添加它,但是当我选择“显示库存”选项时,它不会出现在那里。
void addCD(Inventory i) {
int isbn = readIsbn();
if ( isbn ) {
char buffer[BUF_SIZE];
cout << "CD title: ";
cin.getline(buffer,BUF_SIZE);
string title(buffer);
cout << "Developer name: ";
cin.getline(buffer,BUF_SIZE);
string developer(buffer);
CD new_CD(isbn,title,developer);
i.addItem(new_CD);
}addItem的函数定义如下:
Inventory::addItem(Item& new_item) {
// Lookup item in inventory
ItemTable::const_iterator i = _table.find(new_item.getIsbn());
if ( i == _table.end() ) {
Item *ptrItem = new_item.clone();
_table[ptrItem->getIsbn()] = ptrItem;
} else {
cout << "Warning: Item with isbn " << new_item.getIsbn()
<< " already exists" << endl;
}
}没有错误,只是库存没有显示新添加的项目。
发布于 2015-12-16 14:14:54
对于函数void addCD(Inventory i),传递参数的副本,修改参数i不会影响调用者传递的内容。
您应该使用引用来修改调用方的局部变量。
尝试使用void addCD(Inventory &i)而不是void addCD(Inventory i)。(加上&)
https://stackoverflow.com/questions/34314265
复制相似问题