최근에 Boost
C++ 라이브러리를 사용하기 시작했으며 모든 데이터 형식을 수용 할 수있는 any
클래스를 테스트하고 있습니다. 사실 나는 을 정의하여 any
유형의 변수의 내용을 쉽게 인쇄하려고합니다. 물론 내용의 클래스에도 operator<<
이 정의되어 있어야합니다. 샘플 형식 (int
, double
...)은 기본적으로 표시 되었기 때문에 시작되었습니다. 그리고 지금까지이 코드를 가지고 있습니다.부스트 :: 모든 인스턴스를 실제 형식으로
#include <boost/any.hpp>
#include <iostream>
#include <string>
using namespace std;
using namespace boost;
ostream& operator<<(ostream& out, any& a){
if(a.type() == typeid(int))
out << any_cast<int>(a);
else if(a.type() == typeid(double))
out << any_cast<double>(a);
// else ...
// But what about other types/classes ?!
}
int main(){
any a = 5;
cout << a << endl;
}
그래서 여기에서 가능한 모든 유형을 나열해야합니다. 변수 particular type
에 type_info
이있는 particular type
변수를 전송할 수 있나요?
당신은 "가능한 모든 유형"열거 할 수 없습니다. 그 타입은 * every *가 아닌 * any *라고 불린다. –
더 자세한 유형 삭제 필요성을 위해 [부스트 유형 삭제] (http://www.boost.org/doc/libs/1_55_0/doc/html/boost_typeerasure.html)를 사용할 수 있습니다. 제목은 캐스팅 (잘못되었거나 잘못 알려졌을 때)에 관한 것이기 때문에 질문은 혼란 스럽습니다. 반면에 시체는 형식화에 관한 것이지 잘 이해되고 다소 다른 문제입니다. –
나는'boost :: any'를 사용 해본 적이 없으며 꽤 기괴한 코드를 작성했습니다. 당신도 그것을 사용할 필요가 없습니다. 그것의 사용은 극소수입니다. –