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

Popular posts from this blog

java - pagination of xlsx file to XSSFworkbook using apache POI -

Unlimited choices in BASH case statement -

apache - How do I stop my index.php being run twice for every user -