namespace genetic {
/**
- * Gene.
+ * Class representing Gene
*/
template < typename Type >
class Gene {
protected:
+ /**
+ * Value of the Gene
+ * This for example can be a primitive value such as: int or double, or
+ * with additional changes complex struct.
+ */
Type value;
public:
+ /**
+ * Default constructor
+ */
Gene() {}
+ /**
+ * Class constructor, initializes Gene with default value.
+ */
Gene(Type value) {
this->value = value;
}
/** Copy constructor */
Gene(const Gene& gene) : value(gene.get()) {}
+ /**
+ * 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.get();
return *this;
}
+ /**
+ * Allows read-only access to Gene value
+ */
Type get() const {
return value;
}