It’s not NULL, it crashes because you casting object to unrelated class. TSubclassOf is kind of over-mainstreamed and people forget that this is really UClass* just with limiting options to specific subclass. UClass* is representative of class in reflection system and it’s used to point to specific class as C++ does not really let you to do it outside of templates. So they are not objects of a weapon class, it class it self and you need to spawn those weapons first from that class with:
()->SpawnActor<AWeapon>(Weapons[0]);
But considering you seem you want to create inventory, you need to spawn all weapons from that array to another array that will make inventory.