C++では多態性が初めてです。私のコンストラクタでは、いくつかのオブジェクトをとり、クリーチャーのコレクションを作成します。あるオブジェクトを変更すると、同じオブジェクトがすべて変更されます。なぜこれが起こっているのか分かりません。多型C++では、あるオブジェクトを変更するとすべてのオブジェクトが変更されます
私のコンストラクタで。
lmaxSize=9;
lmiddleSize=6;
lsmallSize=3;
int j=0;
for(int i=0;i<lmaxSize;i++)
{
if(j=3)
{
j=0;
}
if(i<lsmallSize)
{
creature[i]=&dizzy[j];
}
else if(i>=lsmallSize && i<lmiddleSize)
{
creature[i]= &pred[j];
}
else
{
creature[i]=&agile[j];
}
j++;
}
predオブジェクトを変更すると、すべてのpredオブジェクトが変更されます。たとえば、私がエネルギーを消費すると、すべてのpredオブジェクトのエネルギーが変化します。
void collections::consumeEnergy()
{
int creatureNum=0;
cin>>creatureNum;
creature[creatureNum]->consumeEnergyUnits();
}
predatorCreature
void predatorCreature::consumeEnergyUnits()
{
if (_consume < 10)
{
_energyUnits -= 2;
_energyLevel += 1;
}
else if (_consume <= 30)
{
_energyUnits -= 5;
_energyLevel += 2;
}
else
{
_energyUnits -= 7;
_energyLevel += 4;
}
}
agileCreature
void agileCreature::consumeEnergyUnits()
{
if (_consume < 10)
{
_energyUnits -= 2;
_energyLevel += 1;
}
else if (_consume <= 30)
{
_energyUnits -= 5;
_energyLevel += 2;
}
else
{
_energyUnits -= 7;
_energyLevel += 4;
}
}
クラス定義を表示 – Sid
コードに 'std :: unique_ptr'が不十分です。 –