Finished Roulette Selection.
[genetic.git] / src / chromosome.h
1 #ifndef __CHROMOSOME_H
2 #define __CHROMOSOME_H
3
4 #include <vector>
5
6 #include "gene.h"
7
8 using namespace std;
9
10 namespace genetic {
11     /**
12      * Chromosome of given Genes.
13      */
14     template < typename _Gene >
15     class Chromosome {
16     public:
17         typedef _Gene GeneType;
18     protected:
19         /**
20          * Genes of the chromosome
21          */
22         vector<_Gene> genes;
23
24     public:
25         /**
26          * Default constructor
27          */
28         Chromosome() {}
29
30         Chromosome(vector<_Gene> genes) {
31             this->genes = genes;
32         }
33
34         /** Copy constructor */
35         Chromosome(const Chromosome& chromosome)
36             : genes(chromosome.get()) {
37         }
38
39         Chromosome& operator=(const Chromosome& chromosome){
40             this->genes = chromosome.get();
41             return *this;
42         }
43
44         vector<_Gene> get() const {
45             return this->genes;
46         }
47     };
48 }
49
50 #endif /* __CHROMOSOME_H */