bind, function 간단 사용 방법

boost, tr1 다 설명...



// bind 할 함수 
int sum( int a , int b )
{
	return a+b;
}

// boost bind 사용
// _1, _2 는 입력 인자
#include <boost/bind.hpp>

boost::bind( &sum, _1, _2 );

// tr1 bind 사용
// boost와는 다르게 인자를 쓸려면 std::tr1::placeholders 사용 해야함.
#include <functional>

std::tr1::bind( &sum, std::tr1::placeholders::_1, std::tr1::placeholders::_2 );

///////////////////////////////////////////////////////////////////////////////////////////////

// bind 한 함수를 담는 boost::function
#include <boost/function.hpp>

boost::function< int(int, int) > temp = boost::bind( &sum, _1, _2 );

// bind 한 함수를 담는 std::tr1::function
#include <functional>

std::tr1::function< int(int, int) > temp = std::tr1::bind( &sum, std::tr1::placeholders::_1, std::tr1::placeholders::_2 );

///////////////////////////////////////////////////////////////////////////////////////////////

// bind class 처리 - tr1 도 똑같아용....
class boostBind
{
private:
	std::vector< boost::function< int( int, int ) > > m_funcArray;	// 바인딩 한 함수를 모으기 위한 vector

public:
	boostBind() 
	{
		m_funcArray.push_back( boost::bind( &boostBind::sum, this, _1, _2 ) );
		m_funcArray.push_back( boost::bind( &boostBind::sub, this, _1, _2 ) );
	}
	~boostBind() {}

	int sum( int a , int b )
	{
		return a+b;
	}

	int sub( int a , int b )
	{
		return a-b;
	}

	void run()
	{
		// 덧셈 함수 호출
		int temp1 = m_funcArray[0]( 100, 200 );

		// 뺄셈 함수 호출 
		int temp2 = m_funcArray[1]( 200, 100 );
	}
};
by 널부러 2012. 10. 30. 19:26
| 1 |