- 论坛徽章:
- 9
|
本帖最后由 wlmqgzm 于 2015-11-07 13:35 编辑
boost signal2 还是比较简单的实现方法, 做代码比较容易, 学习难度也不高, 有标准范例可学,
最简单的就是 函数对象, 就是相当于1:1的signal2
还有干脆就是自己结合map做一个类似signal2的东西, 下面有范例代码:
总之, 学会boost, 各类工具就都比较齐全了, 开工更容易,代码错误更少,
缺点就是: 代码的总行数比较少, 工作业绩考核吃亏.- #include <iostream>
- #include <map>
- #include <functional>
- using namespace std;
- // 普通函数
- int add(int i, int j) { return i + j; }
- // lambda表达式
- auto mod = [](int i, int j){return i % j; };
- // 函数对象类
- struct divide
- {
- int operator() (int denominator, int divisor)
- {
- return denominator / divisor;
- }
- };
- int main(int argc, char *argv[])
- {
- map<char, function<int(int, int)>> binops =
- {
- { '+', add },
- { '-', minus<int>() },
- { '*', [](int i, int j){return i - j; } },
- { '/', divide() },
- { '%', mod },
- };
- cout << binops['+'](10, 5) << endl;
- cout << binops['-'](10, 5) << endl;
- cout << binops['*'](10, 5) << endl;
- cout << binops['/'](10, 5) << endl;
- cout << binops['%'](10, 5) << endl;
- system("pause");
- return 0;
- }
复制代码 |
|