#include #include /* クラス */ typedef struct __Object { int value; int (*get)(struct __Object *); void (*set)(struct __Object *, int); } Object; /* インスタンスメソッド */ int Object_get(Object *this) { return this->value; } void Object_set(Object *this, int value) { this->value = value; return; } /* コンストラクタ */ Object *new_Object() { Object *object; object = (Object *)malloc(sizeof(Object)); object->get = Object_get; object->set = Object_set; object->value = 0; return object; } /* デストラクタ */ void delete_Object(Object *object) { free(object); } /* メイン関数 */ int main(int argc, char* argv[], char* envp[]) { Object *object; object = new_Object(); object->set(object, 15); printf("%d\n", object->get(object)); delete_Object(object); return 0; }