#include
#include
// ------------------------------------------------------------------------------
using CallbackType = std::function;
// ------------------------------------------------------------------------------
class Karbofos {
CallbackType Begin = nullptr;
CallbackType End = nullptr;
public:
const std::string Name = "Карбофос";
void SetCallback(CallbackType B, CallbackType E) {
Begin = B;
End = E;
}
void Run() {
if (Begin) (Begin)(this);
std::cout << "- Не отдам, слон - мой!\n";
if (End) (End)(this);
}
};
// ------------------------------------------------------------------------------
void Shef(void* i) {
std::cout << "- Стой, живодер " << ((Karbofos*)(i))->Name << "!\n";
}
// ------------------------------------------------------------------------------
void Kollega(void* i) {
std::cout << "- " << ((Karbofos*)(i))->Name << ", ты немец и контрабандист!\n";
}
// ------------------------------------------------------------------------------
int main() {
Karbofos Object;
//CallbackType S = Shef;
//CallbackType K = Kollega;
Object.SetCallback(Shef,Kollega);
Object.Run();
return 0;
}