Add usage of operators in Generation and Chromosome.
[genetic.git] / src / chromosome.h
index 7399ea45959607575d476c741b316b49913efb41..08d24c92c5b422290c0c3198ebf0be700b418963 100644 (file)
@@ -24,6 +24,7 @@ namespace genetic {
          */
         vector<_Gene> genes;
 
+        template<typename> friend class Chromosome;
     public:
         /**
          * Default constructor
@@ -41,7 +42,7 @@ namespace genetic {
 
         /** Copy constructor */
         Chromosome(const Chromosome& chromosome)
-            : genes(chromosome.get()) {
+            : genes(chromosome.genes) {
         }
 
         /**
@@ -51,15 +52,26 @@ namespace genetic {
          * @return Chromosome instance containing copied Genes
          */
         Chromosome& operator=(const Chromosome& chromosome) {
-            this->genes = chromosome.get();
+            this->genes = chromosome.genes;
             return *this;
         }
 
         /**
-         * Allows read-only access to Chromosome Genes
+         * Returns number of Genes in current Chromosome
+         *
+         * @return number of Genes in current Chromosome
+         */
+        unsigned int size() const {
+            return this->genes.size();
+        }
+
+        /**
+         * Returns i-th Gene in the current Chromosome
+         *
+         * @return i-th Gene in the current Chromosome
          */
-        vector<_Gene> get() const {
-            return this->genes;
+        _Gene& operator[](unsigned int i) {
+            return this->genes[i];
         }
     };
 }