Thank you, I decided to use a map since that seems more like what I want, however the overloading doesnt seem to be working, obviousley i'm doing it wrong. I've been looking up how to get it to work but cant seem to.
Code:
#include <iostream>#include <map>
#include <string>
#include <iterator>
using std::string;
using std::cout;
using std::endl;
using std::map;
using std::pair;
class Character;
class Item
{
public:
Item(const string& name): m_name(name)
{}
string GetItemName() const { return m_name; }
friend bool operator< (const Item& a, const Character& b)
{
using pair = std::pair< const string, int >;
return pair{ a.GetItemName(), a.GetItemName() } < pair { b.GetItemInventoryAmount(), b.GetItemInventoryAmount() };
}
private:
string m_name{ "Item" };
};
class Character
{
public:
Character(const string& name): m_name(name)
{}
void AddItemToInventory(Item& item, int amountToAdd);
void OpenInventory();
int GetItemInventoryAmount() const { return m_itemInventoryStock; }
private:
string m_name{ "Character" };
map<Item, int> m_inventory{};
int m_itemInventoryStock{ 0 };
};
void Character::AddItemToInventory(Item& item, int amountToAdd)
{
m_inventory.insert(std::make_pair(item, amountToAdd));
}
void Character::OpenInventory()
{
map<Item, int>::iterator it = m_inventory.begin();
}
int main()
{
Character Link("Link");
Item Rupee("Rupee");
}