主程序

  1. /*将抽象部分与实现部分分离,使它们都能够独立的变化*/
  2. #include "bridge.h"
  3.  
  4. int main()
  5. {
  6. cout <<"main start" <<endl;
  7. sample smp;
  8. smp.display();
  9. cout <<"main end" <<endl;
  10. //sample::bridge bri; //error: ‘class sample::bridge’ is private
  11. return 0;
  12. }

bridge.h

  1. #include <boost/smart_ptr.hpp>
  2. #include <iostream>
  3. using namespace boost;
  4. using namespace std;
  5.  
  6. class sample
  7. {
  8. private:
  9. class bridge;
  10. shared_ptr<bridge> bptr;
  11. public:
  12. sample();
  13. void display();
  14. };
  15.  
  16. class sample::bridge
  17. {
  18. public:
  19. void display();
  20. };

bridge.cpp

  1. #include "bridge.h"
  2. sample::sample()
  3. {
  4. bptr = make_shared<bridge>();
  5. }
  6. void sample::display()
  7. {
  8. bptr->display();
  9. }
  10. void sample::bridge::display()
  11. {
  12. cout << "bridge display!"<<endl;
  13. }

makefile

  1. .SUFFIXES:.h .c .cpp .o
  2.  
  3. CC=$(CXX) $(CXX_FLAG)
  4.  
  5. RM = rm
  6. SRCS = bridge.cpp main.cpp
  7. PROGRAM = bridge
  8. OBJS=$(SRCS:.cpp=.o)
  9.  
  10. INC_PATH = -I$(BOOST_INCLUDE)
  11. LIB_PATH = -L$(BOOST_LIB)
  12. LIBS = -lboost_date_time
  13.  
  14. $(PROGRAM):$(OBJS)
  15. $(CC) $? $(LIB_PATH) $(LIBS) -o $@
  16.  
  17. $(OBJS):$(SRCS)
  18. $(CC) $(CPPFLAGS) -c $(SRCS) $(INC_PATH)
  19.  
  20. .PHONY:clean
  21. clean:
  22. $(RM) $(PROGRAM) $(OBJS)

boost库shared_ptr实现桥接模式的更多相关文章

  1. 2015-03-12---外观模式,建造者模式(附代码),观察者模式(附代码),boost库应用

    今天白天主要看了boost库的应用,主要是经常使用的一些库,array,bind,function,regex,thread,unordered,ref,smartpointers库,晚上看了看设计模 ...

  2. (六)boost库之内存管理shared_ptr

    (六)boost库之内存管理shared_ptr 1.shared_ptr的基本用法 boost::shared_ptr<int> sp(new int(10)); //一个指向整数的sh ...

  3. boost库之shared_ptr

    shared_ptr 编辑 目录 1简介 2作用 3历史 4概要 5用法 ▪ 删除共享对象 ▪ 标准容器 1简介编辑 shared_ptr是一种智能指针(smart pointer). 2作用编辑 s ...

  4. 详解 boost 库智能指针(scoped_ptr<T> 、shared_ptr<T> 、weak_ptr<T> 源码分析)

    一.boost 智能指针 智能指针是利用RAII(Resource Acquisition Is Initialization:资源获取即初始化)来管理资源.关于RAII的讨论可以参考前面的文章.在使 ...

  5. boost库的安装,使用,介绍,库分类

    1)首先去官网下载boost源码安装包:http://www.boost.org/ 选择下载对应的boost源码包.本次下载使用的是 boost_1_60_0.tar.gz (2)解压文件:tar - ...

  6. 比特币源码分析--C++11和boost库的应用

    比特币源码分析--C++11和boost库的应用     我们先停下探索比特币源码的步伐,来分析一下C++11和boost库在比特币源码中的应用.比特币是一个纯C++编写的项目,用到了C++11和bo ...

  7. boost库在windows下的编译和使用

    因为跨平台的原因,现在要使用到boost库,boost库非常大,现在处于摸索阶段. 首先来说boost库在window下的安装和使用. 一.下载 首先从boost官方主页http://www.boos ...

  8. boost库----enable_shared_from_this类的作用和实现原理

    使用boost库时,经常会看到如下的类 class A:public enable_share_from_this<A> 在什么情况下要使类A继承enable_share_from_thi ...

  9. Win7下Boost库的安装

    Boost库是C++领域公认的经过千锤百炼的知名C++类库,涉及编程中的方方面面,简单记录一下使用时的安装过程 1.boost库的下载 boost库官网主页:www.boost.org 2.安装 将下 ...

随机推荐

  1. Log4j官方文档翻译(四、如何在java中输出日志消息)

    我们已经创建来配置文件,本章详细的介绍下如何生成调试信息,并把他们转化成文本文件. 基本的例子 下面就是创建的一个基本的例子: log4j.properties的内容为: log = /usr/hom ...

  2. hash function 字符串哈希函数

    #include <stdio.h> int hash(const char *str) { ; ;;i++) { if (str[i] == '\0') break; sum += (( ...

  3. kernel thread vs user thread

    The most important difference is they use different memory, the kernel mode thread can access any ke ...

  4. 【源码】List<T>泛型绑定repeater,以及repeater的交替绑定

    原文发布时间为:2009-10-28 -- 来源于本人的百度文章 [由搬家工具导入] 后台: using System;using System.Collections.Generic; public ...

  5. duilib入门简明教程 -- 第一个程序 Hello World(3) (转)

    原文转自 http://www.cnblogs.com/Alberl/p/3343579.html 小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个m ...

  6. mdf 与 mdb的对比

    下面的内容从网上搜索而来,未经过本人严格验证,仅供参考. 1.问:mdb数据库能否脱离Access运行?即,没有安装Access,可以打开mdb吗? 答:可以,脱离Access运行,可以到微软的同类产 ...

  7. Hibernate search与Lucene包异常学习心得

    最近使用了了一下Hibernate  Search这个组件 这个组件是对域模型进行全文检索,在全文检索的底层实现上使用了Lucene技术 在进行小测试的时候费了很大的力气去搞定包的问题 我直接通过实例 ...

  8. ActiveMQ spring (一)

    在5.8.0版本下 配置成功. 参考文档:http://yinbinhome.iteye.com/blog/1273228

  9. [TJOI2014] Alice and Bob

    非常好的一道思维性题目,想了很久才想出来qwq(我好笨啊) 考虑a[]数组有什么用,首先可以yy出一些性质 (设num[i]为原来第i个位置的数是什么 , 因为题目说至少有一个排列可以满足a[],所以 ...

  10. Linux基础学习3

    鸟哥私房菜第十一章   read 用来读取键盘输入的变量,常被用在shell script的交互当中 [root@www ~]# read [-pt] variable 选项不参数: -p :后面可以 ...