Я обнаружил ошибку, когда возвращаю указатель на подструктуру в структуре.Ошибка следующая:
evolve.c:28:21: error: incompatible types when returning type ‘PPM_IMAGE {aka struct <anonymous>}’ but ‘PPM_IMAGE * {aka struct <anonymous> *}’ was expected
return (indPointer->image);
Все то же самое, но единственное отличие - лишние звездочки (что означает, что я неправильно возвращаю указатели).Вот фрагменты кода:
Функция:
PPM_IMAGE *evolve_image (const PPM_IMAGE *image, int num_generations, int population_size, double rate);
Оператор возврата:
return (indPointer->image);
Декларация indPointer:
Individual *indPointer = generate_population(population_size, image->width, image->height, image->max_color);
Структураof Individual:
typedef struct {
PPM_IMAGE image; // image
double fitness; // fitness
} Individual;
Как видите, я пытаюсь получить доступ к первому элементу массива, на который указывает indPointer.Из этого первого элемента я пытаюсь вернуть субструктуру изображения в Индивидиуме.