@lupnfer
2017-06-05T16:34:52.000000Z
字数 663
阅读 821
Code
在此输入正文
#include "stdio.h"#include "functional"#include <iostream>#include <memory>class A {public:A(std::function<void(int)>& func) : func_(func){}~A(){}// tick processvirtual 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;}