2015-12-16 72 views
2

这是我的代码,用于将CD添加到我的库存中。我添加它,但是当我选择显示广告资源选项时,它不会显示在那里。库存大厦

为的addItem
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); 

} 

函数定义如下:

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; 
} 

} 

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

+0

如何调用addCD()? – MikeCAT

+0

请考虑['getline'](http://en.cppreference.com/w/cpp/string/basic_string/getline)的'std :: string'版本。 – BoBTFish

回答

5

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

你应该使用引用来修改调用者的局部变量。使用void addCD(Inventory &i)而不是void addCD(Inventory i)。 (add &

+0

是的!它的工作原理...谢谢 – Manahil