Listing 2 Definition of class CGAChromosome and short member functions

#include "random.h"

#ifndef _INC_CHROM_
#define _INC_CHROM_

class CGAChromosome
{
public:
   static void  InitializeChromosomeClass(
                size_t Length);
  ~CGAChromosome();
   CGAChromosome(float Prob = 0.0);

   CGAChromosome* Compliment() const;
   void           Mutate(float Prob);
   inline size_t  GetLength() const;
   inline float   GetFitness() const;
   friend void    Crossover(CGAChromosome* Parent1,
                  CGAChromosome* Parent2,
                  CGAChromosome*& Child1,
                  CGAChromosome*& Child2,
                  float Prob);
   friend float   CalcSimilarityRatio(
                  CGAChromosome* Chrom1,
                  CGAChromosome* Chrom2);
   inline GABool& operator[](size_t Idx);

private:
   static void InitializeCrossoverMask(float Prob);

   static GABool*   m_CrossoverMask;
   static size_t    m_Count;
   static size_t    m_Length;
   GABool*          m_Data;
   float            m_Fitness;
};

size_t CGAChromosome::GetLength() const
{
   return m_Length;
}

float CGAChromosome::GetFitness() const
{
   return m_Fitness;
}

GABool& CGAChromosome::operator[](size_t Idx)
{
   return m_Data[Idx];
}

float CalcFitness(CGAChromosome* Chromosome);

#endif
/* End of File */