LINUX.ORG.RU

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

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

typedef struct
{
    Animal *animal;
    void (Animal::*func)();
}callback;

Незачёт. Во-первых, за typedef вместо простого struct (наследине говносишечки), во-вторых, за велосипед вместо std::function.

callback calldog = (callback){&dog, &Animal::say};
callback callcat = (callback){&cat, &Animal::say};

Ещё незачёт за неиспользование uniform initialization:

callback calldog{&dog, &Animal::say};
callback callcat{&cat, &Animal::say};

Ну и ещё можно докопаться к игнорированию виртуальных функций (say_something должна получать Animal*), константности функции say и отсутствию override при переопределении say.

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

typedef struct
{
    Animal *animal;
    void (Animal::*func)();
}callback;

Незачёт. Во-первых, за typedef вместо простого struct (наследине говносишечки), во-вторых, за велосипед вместо std::function.

callback calldog = (callback){&dog, &Animal::say};
callback callcat = (callback){&cat, &Animal::say};

Ещё незачёт за неиспользование uniform initialization:

callback calldog{&dog, &Animal::say};
callback callcat{&cat, &Animal::say};

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

typedef struct
{
    Animal *animal;
    void (Animal::*func)();
}callback;

Незачёт. Во-первых, за typedef вместо простого struct (наследине говносишечки), во-вторых, за велосипед вместо std::function.

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

typedef struct
{
    Animal *animal;
    void (Animal::*func)();
}callback;

Незачёт. Во-первых, за typedef вместо простого struct (как в говносишечке), во-вторых, за велосипед вместо std::function.