Can't share UENUM across classes

The reason its working without the UENUM() and UFUNCTION() decorators is because the reflection system in unreal can only “see” two types of enum declarations. Either:

UENUM()
namespace EExampleEnum
{
    enum Type
    {
         value1,
         value2
    }
}

OR

UENUM() //this can be blueprinttype
enum class EExampleEnum : uint8
{
   value1,
   value2
}

My recomendation is to ALWAYS use the second type, using an scoped enum is always better. And by the look of your own code you do not need the namespace to begin with (enums do not need a namespace to be declared).
Hope it helps. Make it a great day!