無論出於何種原因,此參考參數正在返回副本。所以當我改變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