게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
db row용으로 쓰려고 만든 any클래스 올려봅니다.
게시물ID : programmer_12259짧은주소 복사하기
작성자 : berrzebb
추천 : 1
조회수 : 279회
댓글수 : 0개
등록시간 : 2015/07/22 00:19:33
옵션
  • 베스트금지
흔한 반도의 라이브러리 개발자입니다.

boost 라이브러리 안에 있는 클래스들을 직접 구현해서 사용하고 있는데 그 중 하나 올려봅니다. 
클래스는 아래에 올려뒀습니다.
http://ideone.com/9qBiZd

기본적인 컨셉은 boost::any와 같습니다.
any item = 1;
item = "aaaa";
item = 3.0f;
item = 기타 다른 구조체나 클래스같은것들;
등으로 저장이 가능하고
꺼내쓸때도 마찬가지로
int i = item;
string s = item;
float f = item;

의 형식으로 사용가능합니다.

std::vector<any> vecResult;

int i = 1;
vecResult.emplace_back(i);
float f = 3.0f;
vecResult.emplace_back(f);
string s = "Hello World";
vecResult.emplace_back(s);

등의 저장도 당연히 가능합니다.

만약 any 클래스에 저장된 타입과 반환 받은 값의 타입이 틀릴경우 bad_cast exception을 뱉어내니 try catch로 예외처리 해주신후 사용하면 됩니다.

물론 명시적으로 캐스트도 가능한데 2가지 방법이 있습니다.
1. item.cast<std::string>();
2. item.as<std::string>();

혹시 필요하신분은 가져가서 사용하셔도 됩니다.ㄷㄷ
현재 dynamic_cast를 이용하여 성능상의 이슈가 있을 수도 있는데 더 좋은 방법 아시는 분은 추천 부탁드리겠습니다..ㄷㄷ
제 머리로는 이게 한계네요..ㅠㅠ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호