История изменений
Исправление 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.