首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >库存建设

库存建设
EN

Stack Overflow用户
提问于 2015-12-16 14:13:23
回答 1查看 215关注 0票数 2

这是我在库存中添加CD的代码。我添加它,但是当我选择“显示库存”选项时,它不会出现在那里。

代码语言:javascript
复制
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的函数定义如下:

代码语言:javascript
复制
 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;
}

}

没有错误,只是库存没有显示新添加的项目。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-16 14:14:54

对于函数void addCD(Inventory i),传递参数的副本,修改参数i不会影响调用者传递的内容。

您应该使用引用来修改调用方的局部变量。

尝试使用void addCD(Inventory &i)而不是void addCD(Inventory i)。(加上&)

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34314265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档