C++;:像Java中一样将接口作为参数传递 我想做一些C++的东西,我可以在爪哇做。以下是我的Java代码: 接口工作者 { 公共工程(); } 阶级雇主 { 公共作废askForWork(工作者) { 工人。工作(); } } 公共班机 { 公共静态void main(字符串[]args) { 雇主=新雇主(); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我在工作!”); } }); 雇主。askForWork(新工人() { @凌驾 公共工程() { System.out.println(“我也在工作!”); } }); } } 我想用C++做。能够在函数调用中实现接口对我来说非常重要。有可能吗?
一种方法是使用std::functionC++;:像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
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内服务任何变量。但正如你们所看到的,我不能在函数调用中实现派生类:(是的,我已经这样做了,但我如何服务于这个函数中不改变的变量?