无论出于何种原因,此参考参数正在返回副本。所以当我改变OutWeapon的索引0时,它不会影响Weapon1。我做错了吗?参考参数返回副本
class ULoadout
{
public:
ULoadout();
FWeaponSlot Weapon1;
FWeaponSlot Weapon2;
FWeaponSlot Weapon3;
FWeaponSlot Weapon4;
FSkillSlot Skill1;
FSkillSlot Skill2;
FSkillSlot Skill3;
FSkillSlot Skill4;
void GetWeapon(int32 InIndex, FWeaponSlot& OutWeapon);
void GetSkill(int32 InIndex, FSkillSlot& OutSkill);
};
void ULoadout::GetWeapon(int32 InIndex, FWeaponSlot& OutWeapon)
{
switch (InIndex)
{
case 0:
OutWeapon = Weapon1;
break;
case 1:
OutWeapon = Weapon2;
break;
case 2:
OutWeapon = Weapon3;
break;
case 3:
OutWeapon = Weapon4;
break;
default:
break;
}
}
为什么'Skill2'等公众?你为什么不使用数组? –
看起来你正试图给另一个引用'OutWeapon'分配一个引用'Weapon1',它不会做你期望的。在C++中,不可能重新绑定引用。赋值引用总是导致对引用对象的赋值。 – VTT
当你调用'GetWeapon()'时,你为'OutWeapon'分配内存然后通过。你真正需要的是返回一个指针。 – CinCout