I assume that your weapons have different behaviours.
For mouse and keyboard input, you usually want to cycle with the keys ‘1’, ‘2’ … and the mouse wheel.
So having a function that swaps to the weapon with the selected ID is the right way to go. (I wouldnt store the current weapon as int though but rather as “CurrentSelectedWeapon → WeaponBaseClass” so that you can access its individual functionality.
If your weapons all handle the same way you dont need multiple meshes at the same time and have one being invisible. You can just change your weapon and your collision mesh.
If they are more complex and consist of different objects I would spawn them as individual actors and attach them.
And then you can make them visible / invisible on demand. With this solution you need to keep track of all weapons though. By storing them inside the player in a List or something. You can then use the Lists Index as the ID to switch to.