Best way to house multiple different weapon classes in a singular inventory so that they can be swapped between?

The way I might handle this is parent class “Item”, subclass EquipableItem, subclass WeaponBase, Subclass MeleeWeapon, Subclass of that, BroadswordWeapon. Item has a variable ‘ItemType’ of type GameplayTag. BroadswordWeapon’s ItemType is “Weapon.TwoHanded”. When looking to equip/use, check and react to your Item’s itemtype, a Switch on Gameplaytag can easy to manage for quite a few types. Eventually you will need to Cast into your level of subclass that defines the behavior/variables, but using tags as filters is really fast and easy.

Your inventories can be a basic array of Item. Item has vars for things like Weight, Cost, InventoryImage. WeaponBase might have vars like CurrentDurability, MeleeWeapon might have vars SlashDamage, ImpactDamage, etc.

There are different ways to do this if you’re expecting a lot of different specific behaviors, but I found this kind of approach easy to setup up and maintain and a good starting point.