2015-12-16 95 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