728x90
반응형
std::any_cast
는C++17
에서 도입된std::any
타입에 저장된 값을 원하는 타입으로 안전하게 변환하는 함수입니다.std::any
는 모든 타입의 값을 저장할 수 있는 컨테이너이지만, 내부에 어떤 타입이 들어있는지 모르기 때문에 값을 꺼낼 때std::any_cast
를 사용합니다.
-
cpp
#include <any> #include <iostream> #include <string> int main() { std::any a = 10; // 값 가져오기 (성공 시) int value = std::any_cast<int>(a); std::cout << value << std::endl; // 출력: 10 // 포인터 가져오기 (잘못된 타입이면 nullptr 반환) if (int* p = std::any_cast<int>(&a)) { std::cout << *p << std::endl; // 출력: 10 } // 잘못된 타입으로 가져오면 std::bad_any_cast 예외 발생 try { std::string s = std::any_cast<std::string>(a); } catch (const std::bad_any_cast& e) { std::cout << "예외 발생: " << e.what() << std::endl; } return 0; }
-
구분 설명 값 반환 형태 T std::any_cast(const std::any&)
또는T std::any_cast(std::any&)
포인터 반환 형태 T* std::any_cast(std::any*)
잘못된 타입 캐스팅 시 값 반환 버전은 std::bad_any_cast
예외 발생포인터 버전 실패 시 nullptr
반환
- 도움이 되셨으면 하단의 ❤️ 공감 버튼 부탁 드립니다. 감사합니다! 😄
728x90
반응형
'C C++' 카테고리의 다른 글
C++11 문자열 리터럴(Raw String Literal) (0) | 2025.03.18 |
---|---|
C++ 중괄호 초기화(Uniform Initialization)와 프리미티브 타입의 기본값 정리 (0) | 2025.03.18 |
C++ std::invalid_argument : 인자 예외 처리 (0) | 2025.03.18 |
shared_ptr 배열을 안전하게 관리하는 방법과 C++ 버전별 주의사항 (0) | 2025.03.18 |
C++ 함수 오버로딩(overloading) '더 나은 변환(better conversion)' (0) | 2025.03.18 |