观察者模式 C++11
Posted GIS开发
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了观察者模式 C++11相关的知识,希望对你有一定的参考价值。
#include <functional> #include <vector> #include <algorithm> #include <iostream> typedef std::function<void(int)> Func; class Observer { public: void AddObserver(Func func) { m_vecFuncs.push_back(func); } void Notify(int i) { std::for_each(m_vecFuncs.begin(), m_vecFuncs.end(), [=](Func func){func(i); } ); } private: std::vector<Func> m_vecFuncs; }; class Add { public: void operator()(int i, int b=0) { std::cout << i << std::endl; } }; class Sub { public: void func(int i) { std::cout << i << std::endl; } }; int main() { Observer observer; observer.AddObserver(Add()); Sub sub; observer.AddObserver(std::bind(&Sub::func, &sub, std::placeholders::_1)); observer.Notify(1); observer.Notify(2); }
以上是关于观察者模式 C++11的主要内容,如果未能解决你的问题,请参考以下文章
C++11之用std::function和std::bind实现观察者模式