UCSpecies::UCSpecies(UCGenome &FirstOrg,
int SpeciesID) :m_iSpeciesID(SpeciesID),
m_fBestFitness(FirstOrg.Fitness()),
m_iGensNoImprovement(0),
m_iAge(0),
m_Leader(FirstOrg), //copy constructor error
m_fSpawnsRqd(0)
{
m_vecMembers.Add(&FirstOrg);
m_Leader = FirstOrg; //assignment operator error
}
void UCSpecies::AddMember(UCGenome &NewMember)
{
if (NewMember.Fitness() > m_fBestFitness)
{
m_fBestFitness = NewMember.Fitness();
m_iGensNoImprovement = 0;
m_Leader = NewMember; //assignment operator error
}
m_vecMembers.Add(&NewMember);
}
UCGenome UCSpecies::Spawn()
{
UCGenome baby;
if (m_vecMembers.Num() == 1)
{
baby = *m_vecMembers[0]; //assignment operator error
}
else
{
int MaxIndexSize = (int)(UCParams::fSurvivalRate * m_vecMembers.Num()) + 1;
int TheOne = RandomInt(0, MaxIndexSize);
baby = *m_vecMembers[TheOne]; //assignment operator error
}
return baby; //copy constructor error
}