TSubobjectPtr is for pointers to components, and as of UE4.6, it will be deprecated, so in the future you can use regular pointers for components.
but your inventory is full of actor references, not components, so you can use regular pointers like you are doing, but every item in your inventory will need to be an instance spawned into the world.
or you can use TSubclassOf to store classes to spawn from. any items that have values changed from its default values can be initialized from a struct.
storing a list of structs that contain the class type and custom init values for an item is cheaper than spawning the items into the level and storing a pointer to the item.
if your game items are always the same stats for every play through, you could store all of the initialization structs in a .csv spread sheet, then in your array you can just store integers that represent the ItemID.