Originariamente inviato da yagorossi
posso mettere come elemento di una struttura una funzione che mangia un elemento della stessa struttura (o sui sottoelementi) e sputa un numero?
1° variante
codice:
#include <stdio.h>

typedef struct {
  int a;
  int (*doTask)(crom*);
} crom;

int fooTask(crom* c)
{
  return c->a / 2; 
}

int main()
{
  crom c = {10, fooTask};

  printf("%d", c.doTask(&c));

  return 0;
}

2° variante, utilizzata da alcuni moduli del kernel di linux
codice:
#include <stdio.h>

struct data {
  char buffer[80];
};

struct data_operations {
  void (*fill)(struct data *);
  void (*convert)(struct data *);
};

void con_fill(struct data *d)
{
  printf("con_fill\n");
}

void con_convert(struct data *d)
{
  printf("con_convert\n");
}

struct data_operations con_data_operation = {
  fill: con_fill,
  convert: con_convert
};

int main()
{
  struct data d;
  struct data_operations* d_op = &con_data_operation;

  d_op->fill(&d);
  d_op->convert(&d);
  
  return 0;
}

In c++ questa cosa si fa in maniera più pulita, dato che è orientato ad oggetti e supporta il polimorfismo, e non è necessario "simularlo" con questa tecnica.