Could someone explain what benefits it would have to use enums over classes?
You generally wouldn't use enums over classes, generally you'd use enums in combination with classes. Enums are just a way to conveniently use language to describe numeric ID's - i.e. it's easier to pass the word Knife to some method, rather than some ID number like 8 - it also allows the compiler to detect errors that it wouldn't be able to detect if you just used a basic int number.
With the way your inventory class is currently set up, it doesn't allow the player to carry more than 1 of the same item (except the dog tags), although that's fairly easy to allow by changing the bools to ints.
But most importantly, every time you add a new item into the game or change, rename or remove an existing item, you'll have to add, change or remove code to your inventory class, both for the storage and the methods - like the print method. You definately don't want to be doing that.
The Inventory class I posted means you don't have to change any code in the Inventory class whenever items are added, changed, renamed, removed, because it stores the Item as an enum variable rather than a hard coded field, and it allows carrying more than 1 of the same item.
The benefits will also become more clear as you add more functionality to your Inventory class, like querying if it contains a specific item, or dropping items, etc, you don't want to be changing all that code as well every time a new item is added, changed, renamed or removed. You don't want to be changing any code, anywhere in your game, when items are added, changed or removed, except in the one place they are defined.