当前位置:  开发笔记 > 编程语言 > 正文

库存大楼

如何解决《库存大楼》经验,为你挑选了1个好方法。

这是我将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;
}

}

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



1> MikeCAT..:

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

你应该使用reference来修改调用者的局部变量.

尝试使用void addCD(Inventory &i)而不是void addCD(Inventory i).(添加&)

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有