[今さら]C言語でクラスライブラリを作る[Cかよ]
■ このスレッドは過去ログ倉庫に格納されています
0091デフォルトの名無しさん
2006/09/20(水) 20:34:16そこで継承とメソッドのオーバーライドをキャストなしでする方法を考えた。
クラスを一つ定義する毎にマクロを3つ定義する。
・クラスや仮想関数の型定義をするマクロ。
・メンバを定義するマクロ。
・メンバを初期化するマクロ。
■Hoge.h
#define HOGE_DEFINE_CLASS(CLASS) \
typedef struct CLASS##_t CLASS;\
typedef void (*CLASS##_destroy_t)(CLASS *self);\
typedef void (*CLASS##_print_t)(CLASS *self);\
#define HOGE_DEFINE_MEMBER(CLASS) \
int hoge;\
CLASS##_destroy_t destroy;\
CLASS##_print_t print;\
#define HOGE_INIT_METHOD(CLASS, HOGE) \
self->hoge = HOGE;\
self->destroy = (CLASS##_destroy_t) Hoge_destroy;\
self->print = (CLASS##_print_t) Hoge_print;\
/* クラス定義 */
HOGE_DEFINE_CLASS(Hoge)
struct Hoge_t {
HOGE_DEFINE_MEMBER(Hoge)
};
Hoge *Hoge_create(int hoge);
void Hoge_destroy(Hoge *self);
void Hoge_print(Hoge *self);
■ このスレッドは過去ログ倉庫に格納されています