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