Change inherited mesh socket runtime?

Hello guys, sorry to bother you, but I want to confirm something. Here is the scenario I’m in. I have a character with a weapon socket on its back and another socket in its hand. The idea is to change the socket of the weapon mesh at runtime. (in my case by using c++). The weapon mesh is inherited (see the screenshot). After some research it appears that changing the socket of inherited meshes is not possible? Is that so? My idea is to holster/unholster weapons by changing the weapons location sockets.

Here are the references to the meshes in my character class. Nothing special.

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapons", meta = (AllowPrivateAccess = "true"))
	USkeletalMeshComponent* Weapon;

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Weapons", meta = (AllowPrivateAccess = "true"))
	USkeletalMeshComponent* Shield;

Here is the constructor part:

this->Weapon = this->CreateOptionalDefaultSubobject<USkeletalMeshComponent>(TEXT("Weapon"));
this->Weapon->SetupAttachment(this->GetMesh(), this->WeaponBackSocketName);

this->Shield = this->CreateOptionalDefaultSubobject<USkeletalMeshComponent>(TEXT("Shield"));
this->Shield->SetupAttachment(this->GetMesh(), this->ShieldBackSocketName);