어떤 자료형이든 다 넣을수 있는 그런 컨테이너...

사용법은 아래와 같다...

그런데 이건 어디다 써먹으면 좋을까? 잘모르겠지만 일단 정리...

#include <boost/any.hpp>

int main()
{
	boost::any all;
	
	// 아래와 같이 넣으면 int형으로 변경 
	// 값만 써도 알아서 인식하지만 확실하게 어떤 자료형이 들어갔는지 알기 위해 
	all = (int)100;
	
	// 이상태에서는 자료형은 안바뀌고 값만 갱신
	all = 200;

	// 여기서 다른 자료형으로 데이터를 넣으면 자료형도 변경 되면서 데이터 갱신
	all = (float)1.3f;

	// 값을 꺼내는 방법 첫번째 -  타입을 비교 하고 맞을때 값 꺼내기 
	if( all.type() == typeid(float) )
	{
		float &output = boost::any_cast<float &>(all);
	}

	// 값을 꺼내는 방법 두번째 -  try catch 문을 사용 해서 꺼내기 
	// 여기서는 실패에서 에러 나겠죵...
	try
	{
		int &otput = boost::any_cast<int &>(all);
	}
	catch(const boost::bad_any_cast &e)
	{
		printf("%s\n", e.what() );
	}
	
	// 변수 초기화는 요렇게???
	all = boost::any();

	if( all.empty() )
	{
		printf("아무것도 없네요\n");
	}
	
	return 0;
}


by 널부러 2012. 10. 18. 13:40