首页 C++系列15:any
文章
取消

C++系列15:any

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
可以保存任意类型的值,类似QtQVariant

if (a.type() == typeid(std::string)) 
{
    std::string s = std::any_cast<std::string>(a);//使用any_cast<该值的类型>来获取值
    useString(s);
}
else if (a.type() == typeid(int)) // a.type().name()会打印出int
{
    useInt(std::any_cast<int>(a));
}

转换失败会抛出std::bad_any_cast

所以最好
try {
    auto s = std::any_cast<std::string>(a);
    ...
}
catch (std::bad_any_cast& e) {
    std::cerr << "EXCEPTION: " << e.what() << '\n';
}

也可以放入容器
std::vector<std::any> v;

欢迎评论交流

本文由作者按照 CC BY 4.0 进行授权