rabbitfoot530's diary

読んだ本と、プログラムに関することのメモです。好きな言語は、C++, Python, Golang, TypeScript。数学・物理・学習理論も好きです。

structからclassへ書き換え

Cのソースにある、structをクラスへ書き換える。
関数ポインタ使ってると、下記のようにすればいい。

typedef int (*handler_t)(int fd, void* arg);
typedef int (*destructor_t)(void* arg);

typedef struct context {
  void* arg;
  handler_t handler;
  destructor_t destructor;
} context;
class Base {
  static int handler(int fd, void* arg);
  static int destructor(void* arg);
};

class Context {
public:
  void* arg;
  int (Base::*handler)(int fd, void* arg);
  int (Base::*destructor)(void* arg);
};

==== 2012.03.30 追記 ====
って思ってたけど、なんか違う?

typedef int (*handler_t)(int fd, void* arg);
typedef void (*destructor_t)(void* arg);

class Context {
public:
  void* arg;
  handler_t handler;
  destructor_t destructor;
};

こうするのか?

==== 追記その2 ====
これでもいいのかー

//typedef int (*handler_t)(int fd, void* arg);
//typedef void (*destructor_t)(void* arg);

class Context {
public:
  void* arg;
  //  handler_t handler;
  //  destructor_t destructor;
  boost::function<int (int, void*)> handler;
  boost::function<void (void*)> destructor;
};