je la classe Store
suivante:Pourquoi attribuer un objet à une carte produisant un objet vide?
class Store
{
public:
Store() : m_npc_id(0)
{
}
Store(const int npc_id,
vector<std::string> categories,
vector<StoreItem> store_items) :
m_npc_id(npc_id)
{
m_categories = categories;
m_store_items = store_items;
}
Store& operator=(const Store& rhs)
{
return *this;
}
vector<std::string> GetCategories() const;
vector<StoreItem> GetItems() const;
private:
const int m_npc_id;
vector<std::string> m_categories;
vector<StoreItem> m_store_items;
};
Quand j'appelle le code suivant, l'objet est stocké correctement dans la variable store
...
const Store& store = Store(npc_id, category.second, items[npc_id]);
Cependant, dès que je tente de insérer la variable store
dans la carte de tous Stores
, cela ne fonctionne pas ... L'objet qui est stocké est vide, et prend les valeurs constructeur par défaut pour Store
.
for (auto &category : categories)
{
// In this case, category.second is a string value
// items[npc_id] is a StoreItem
const int npc_id = category.first;
const Store& store = Store(npc_id, category.second, items[npc_id]);
stores[npc_id] = store;
}
Votre opérateur d'affectation n'attribue pas l'objet. –
Pourquoi votre 'Store & operator = (const Store & rhs)' est-il vide? Si vous mettez un point d'arrêt à l'intérieur de cette méthode, vous remarquerez qu'il sera appelé à partir de cette ligne: 'stores [npc_id] = store;' – cha