mthoutai

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

主程序

/*将抽象部分与实现部分分离,使它们都能够独立的变化*/
#include "bridge.h"

int main()
{
	cout <<"main start" <<endl;	
	sample smp;
	smp.display();
	cout <<"main end" <<endl;	
	//sample::bridge bri;      //error: ‘class sample::bridge’ is private
	return 0;
}

bridge.h

#include <boost/smart_ptr.hpp>
#include <iostream>  
using namespace boost;  
using namespace std;  

class sample
{
	private:
		class bridge;
		shared_ptr<bridge> bptr;
	public:
		sample();
		void display();
};

class sample::bridge
{
	public:
		void display();
};

bridge.cpp

#include "bridge.h"
sample::sample()
{
		bptr = make_shared<bridge>();
}
void sample::display()
{
	bptr->display();
}
void sample::bridge::display()
{
	cout << "bridge display!"<<endl;
}

makefile

.SUFFIXES:.h .c .cpp .o

CC=$(CXX) $(CXX_FLAG)

RM = rm
SRCS = bridge.cpp main.cpp
PROGRAM = bridge
OBJS=$(SRCS:.cpp=.o)

INC_PATH =  -I$(BOOST_INCLUDE)
LIB_PATH =  -L$(BOOST_LIB)
LIBS = -lboost_date_time

$(PROGRAM):$(OBJS)
	$(CC) $? $(LIB_PATH) $(LIBS) -o $@

$(OBJS):$(SRCS)
	$(CC) $(CPPFLAGS) -c $(SRCS)  $(INC_PATH)
	
.PHONY:clean
clean:
	$(RM) $(PROGRAM) $(OBJS)
	
	


posted on 2017-07-25 10:54  mthoutai  阅读(286)  评论(0编辑  收藏  举报