何らかの理由で、この参照パラメータがコピーを返しています。したがって、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'など公開されていませんか?なぜあなたは配列を使用していませんか? –
参照 'Weapon1'を別の参照' OutWeapon'に割り当てようとしているようですが、それはあなたが期待することをしません。 C++では、参照を再バインドすることはできません。参照への代入は、常に参照されるオブジェクトへの代入を引き起こします。 – VTT
'GetWeapon()'を呼び出すと、 'OutWeapon'のためにメモリを割り当ててから渡します。本当に必要なのは、ポインタを返すことです。 – CinCout