C++: Pass interface as parameter like in Java -
i want stuff in c++ can in java. here java code:
interface worker { public void work(); } class employer { public void askforwork(worker worker) { worker.work(); } } public class main { public static void main(string[] args) { employer employer = new employer(); employer.askforwork(new worker() { @override public void work() { system.out.println("i'm working!"); } }); employer.askforwork(new worker() { @override public void work() { system.out.println("i'm working too!"); } }); } } and want in c++. important me able implement interface inside function call. possible?
one way use std::function.
class worker { public: explicit worker(std::function<void()> task) : task_(task) {} void work() { task_(); } private: std::function<void()> task_; }; class employer { ... void askforwork(std::unique_ptr<worker> worker) { worker->work(); } }; int main(...) { employer employer; employer.askforwork(new worker( []() { std::cout << "i'm working!" << std::endl; } )); }
Comments
Post a Comment