@lupnfer
2017-06-05T16:34:52.000000Z
字数 663
阅读 746
Code
在此输入正文
#include "stdio.h"
#include "functional"
#include <iostream>
#include <memory>
class A {
public:
A(std::function<void(int)>& func) : func_(func){
}
~A(){}
// tick process
virtual void process() {
func_(6);
}
// interrupt
// virtual void interrupt();
private:
std::function<void(int)> func_;
};
template <typename Func>
class B {
public:
B(Func& func) : func_(func){
//func_ = func;
//func_(func);
}
~B() {}
virtual void process() {
func_(6);
}
private:
Func func_;
};
int main() {
auto a = std::make_shared<A>((std::function<void(int)>) [](int i ) { std::cout << i << std::endl; });
a->process();
auto funcb = [](int i) { std::cout << i << std::endl; };
auto b = std::make_shared<B <decltype(funcb)>>(funcb);
b->process();
char c = getchar();
return 0;
}