次のように、さまざまな typedef を持つコードに出くわしました。
class GAGenome : public GAID {
public: GADefineIdentity("GAGenome", GAID::Genome);
public:
typedef float (*Evaluator)(GAGenome &);
typedef void (*Initializer)(GAGenome &);
typedef int (*Mutator)(GAGenome &, float);
typedef float (*Comparator)(const GAGenome&, const GAGenome&);
typedef int (*SexualCrossover)(const GAGenome&, const GAGenome&,
GAGenome*, GAGenome*);
typedef int (*AsexualCrossover)(const GAGenome&, GAGenome*);
//some other code
ここでの「typedef」の使用法がわかりません。誰か教えてもらえますか? ここは少し複雑に見えます。