+ /**
+ * Default constructor
+ */
+ Gene() {}
+
+ /**
+ * Class constructor, initializes Gene with default value.
+ */
+ Gene(Type value) {
+ this->value = value;
+ }
+
+ /** Copy constructor */
+ Gene(const Gene& gene) : value(gene.value) {}
+
+ /**
+ * Copy operator.
+ *
+ * @param gene Gene from which the value should be copied.
+ * @return Gene instance containing copied value
+ */
+ Gene& operator=(const Gene& gene) {
+ this->value = gene.value;
+ return *this;