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'가 충분하지 않습니다. –