Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;:像Java中一样将接口作为参数传递 我想做一些C++的东西,我可以在爪哇做。以下是我的Java代码: 接口工作者 { 公共工程(); } 阶级雇主 { 公共作废askForWork(工作者) { 工人。工作(); } } 公共班机 { 公共静态void main(字符串[]args) { 雇主=新雇主(); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我在工作!”); } }); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我也在工作!”); } }); } } 我想用C++做。能够在函数调用中实现接口对我来说非常重要。有可能吗?_Java_C++_C++11_Lambda_Interface - Fatal编程技术网

C++;:像Java中一样将接口作为参数传递 我想做一些C++的东西,我可以在爪哇做。以下是我的Java代码: 接口工作者 { 公共工程(); } 阶级雇主 { 公共作废askForWork(工作者) { 工人。工作(); } } 公共班机 { 公共静态void main(字符串[]args) { 雇主=新雇主(); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我在工作!”); } }); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我也在工作!”); } }); } } 我想用C++做。能够在函数调用中实现接口对我来说非常重要。有可能吗?

C++;:像Java中一样将接口作为参数传递 我想做一些C++的东西,我可以在爪哇做。以下是我的Java代码: 接口工作者 { 公共工程(); } 阶级雇主 { 公共作废askForWork(工作者) { 工人。工作(); } } 公共班机 { 公共静态void main(字符串[]args) { 雇主=新雇主(); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我在工作!”); } }); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我也在工作!”); } }); } } 我想用C++做。能够在函数调用中实现接口对我来说非常重要。有可能吗?,java,c++,c++11,lambda,interface,Java,C++,C++11,Lambda,Interface,一种方法是使用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(st

一种方法是使用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;
    }
  ));
}
类工作者{
公众:
显式工作程序(std::函数任务)
:任务{(任务){}
无效工作(){
任务_uuz();
}
私人:
std::功能任务;
};
阶级雇主{
...
无效AskForWork(std::unique\u ptr worker){
工人->工作();
}
};
int main(…){
雇主;
雇主。AskForWork(新工人)(
[]() {

Std::CUT显示了你编写的代码。查找抽象基类和虚拟方法。显示你编写的C++代码。我写的是对象类(),并将其调用如下:但是用这种方法,我不能在lambDas内服务任何变量。但正如你们所看到的,我不能在函数调用中实现派生类:(是的,我已经这样做了,但我如何服务于这个函数中不改变的变量?