LINUX.ORG.RU

История изменений

Исправление waker, (текущая версия) :

Хотя у меня ни разу не возникало нужды в подобном — тащить вместе с объектом какие-то функции.

правильно, потому что функции нужны _в классе_, а не в объекте.

а классы в примитивных объектных системах не используются.

классом, по сути, является набор методов для работы с объектом.

твой пример понятен, но это не самая лучшая реализация.

гораздо приятнее работать, если класс и объект разделены.

тогда у тебя получится вот такой класс:

typedef struct {
  void (*)prop(object *this, int n);
} class;

объект:

typedef struct {
  class *klass;
  int n;
} object;

создаем классы:

  class plus_class = {
    .prop = plus
  };
  class minus_class = {
    .prop = minus
  };

создаем объекты

  object objects[2] = {
    {
      .klass = &plus_class,
      .n = 10
    },
    {
      .klass = &minus_class,
      .n = 20
    }
  };

дальше дергаем:

objects[0].klass->prop(&objects[0], 50);
objects[1].klass->prop(&objects[1], 25);

Исправление waker, :

Хотя у меня ни разу не возникало нужды в подобном — тащить вместе с объектом какие-то функции.

правильно, потому что функции нужны _в классе_, а не в объекте.

а классы в примитивных объектных системах не используются.

классом, по сути, является набор методов для работы с объектом.

твой пример понятен, но это не самая лучшая реализация.

гораздо приятнее работать, если класс и объект разделены.

тогда у тебя получится вот такой класс:

typedef struct {
  void (*)prop(object *this, int n);
} class;

объект:

typedef struct {
  class *klass;
  int n;
} object;

создаем классы:

  class plus_class = {
    .prop = plus
  };
  class minus_class = {
    .prop = minus
  };

создаем объекты

  object objects[2] = {
    {
      .klass = &plus_class,
      .n = 10
    },
    object obj_minus = {
      .klass = &minus_class,
      .n = 20
    }
  };

дальше дергаем:

objects[0].klass->prop(&objects[0], 50);
objects[1].klass->prop(&objects[1], 25);

Исходная версия waker, :

Хотя у меня ни разу не возникало нужды в подобном — тащить вместе с объектом какие-то функции.

правильно, потому что функции нужны _в классе_, а не в объекте.

а классы в примитивных объектных системах не используются.

классом, по сути, является набор методов для работы с объектом.

твой пример понятен, но это не самая лучшая реализация.

гораздо приятнее работать, если класс и объект разделены.

тогда у тебя получится вот такой класс:

typedef struct {
  void (*)prop(object *this, int n);
} class;

объект:

typedef struct {
  class *klass;
  int n;
} object;

создаем классы:

  class plus_class = {
    .prop = plus
  };
  class minus_class = {
    .prop = minus
  };

создаем объекты

  object objects[2] = {
    {
      .klass = &plus_class,
      .n = 10
    },
    object obj_minus = {
      .klass = &minus_class,
      .n = 20
    }
  };

дальше дергаем:

objects[0].klass->prop(&objects[0], 50);
objects[1].klass->prop(&objects[1], 25);