Ошибка команды компоновщика Xcode

Моя задача - кодировать генетический алгоритм, используя класс GenAlg. У меня есть эта ошибка (скриншот), и я не могу понять, что делать... Я думаю, что проблема где-то в функции fitness_sort_ind. Работает хорошо, тогда все в main(). Но я хотел бы использовать класс.

GenAlg.cpp

GenAlg::individ fitness_sort_ind(GenAlg::individ a, GenAlg::individ b) 
{
    if (a.fitness < b.fitness)
        return a;
    else return b;
}

GenAlg.hpp

class GenAlg
{
private:
    int a;
    int b;
    int N;
    int p;
public:
    GenAlg();
    double target(double x);     // функция
    struct individ;
    typedef vector<individ> ind_vector;     // вектор популяции
    void transToBinary(individ &temp);     // перевод в двоичную СС
    void transToDec(individ &temp);     // перевод в десятичную СС
    void get_fitness(individ &temp);     // пригодность особи
    void get_fitness_vec(ind_vector &temp);     // пригодность каждой особи вектора
    individ fitness_sort_ind(individ a, individ b);     // выбор лучшей из двух особей
    void print(ind_vector &temp);     // вывод вектора
    void print_best(ind_vector &temp,double &best_fitness,int &best_point,int &count);     // вывод лучшей на данной момент особи
    void init_population(ind_vector &pop);     // создание популяции
    void mutation(individ &temp);     // мутация
    void mutation_vect(ind_vector &temp);     // мутация всей популяции
    void cross(individ &a, individ &b, ind_vector &buff);     // кроссинговер
    void reproduction(ind_vector &population, ind_vector &buff);     // скрещивание
    ~GenAlg();
};

struct GenAlg::individ
{
    int X;     // значение
    int D[8] = { 0,0,0,0,0,0,0,0 };     // 8 бит для работы с двоичной СС
    double fitness;     // пригодность
};

main.cpp

#include "GenAlg.hpp"
#include "GenAlg.cpp"

int main()
{
    GenAlg obj;
    srand(unsigned(time(NULL)));

    GenAlg::ind_vector vec, buff;
    int count = 0;

    int best_point;
    double best_fitness;

    obj.init_population(vec);
    best_fitness = vec[0].fitness;
    best_point = vec[0].X;
    obj.print(vec);

    for (int i = 0; i < 5000; i++) {
        count++;
        obj.reproduction(vec, buff);
        obj.print_best(vec, best_fitness, best_point, count);
        if (count > 30) {
            cout << "STOP!\n";
            break;
        }
    }
}

Вот скриншот:

СКРИНШОТ

0 ответов

Другие вопросы по тегам