hiro1357 icon

object_oriented_like.c

hiro1357 | PRO | 03/29/19 06:13:58 PM UTC | 0 ⭐ | 424 👁️ | Never ⏰ | []
C |

890 B

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <malloc.h>
 
/* クラス */
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;
}

Comments