Есть некая структура с полями указателями на виртуальные методы. Хочется сделать типы этих полей читаемыми, то есть что-то вроде:
#ifndef AGENT_H
#define AGENT_H
#include "genome.h"
#include "world.h"
#include "neuro.h"
typedef void action_context_t;
typedef action_t* (*action_func_t)(action_context_t* context, sensor_t* sensor);
typedef agent_t* (*agent_born_func_t)(agent_t* agent);
typedef enum {TOP, BOTTOM, LEFT, RIGHT} direction_t;
typedef struct {
neuro_t* neuro;
energy_t energy;
genome_t* genome;
cell_t* cell;
direction_t direction;
energy_t energy_max;
int infected;
action_func_t action;
action_context_t* action_context;
agent_born_func_t new_agent;
} agent_t;
void agent_action(agent_t* agent);
void agent_work(agent_t* agent);
void agent_unref(agent_t* dead);
#endif
Но тут, понятное дело, ошибка - agent_t undeclared. Как это сделать читаемо (то есть без void*), чтобы agent_t сохранить?