boost::any

 

abstract

필요한 헤더

<boost/any.hpp>

가능한 일

거의 어떤한()이라도 저장 가능한 동적형 변수

레퍼런스

en / jp

 

sample

#include <iostream>

#include <boost/any.hpp>

using namespace std;

 

struct Point

{

        Point(int ix=0,int iy=0) : x(ix), y(iy) {}

        int x, y;

};

 

static char* hw = "hello world.";

 

int main()

{

        boost::any a, b;

        a = 100; // 정수를 넣는다.

        b = hw;  // 문자열을 넣는다.

        a = b;   // any동사의 대입

        b = Point(10,20); // 사용자 정의 형도 넣어보자..

 

        // 값을 빼낸다.

        cout << boost::any_cast<Point>(b).x << endl;

        if( a.type() == typeid(int) )

               cout << "int입니다." << endl;

        else if( a.type() == typeid(char*) )

               cout << "문자열입니다." << endl;

 

        return 0;

}

출력

10.

문자열입니다.


any_cast 실패하면  bad_any_cast 던진다.

 

etc

생성자랑 대입 연산자가 template로 되어 있어서 넘겨진 오브젝트의 형에 따라서 대응하는 holder 클래스를 만들어 그것을 기저 클래스의 포인터에 의해서 any 중에 보관한다 라는 것으로 구현 되어 있다.


출처 : http://www.kmonos.net/alang/boost/classes/any.html
저작자 표시
신고
by 흥배 2010.08.02 09:00
| 1 |

티스토리 툴바