gpt4 book ai didi

c++ - boost::any 如何检查空值/未定义值

转载 作者:行者123 更新时间:2023-12-01 14:49:03 24 4
gpt4 key购买 nike

我有一个 boost::any 对象,我想检查它的类型。

typedef boost::any Value;

Value a = 12;

if(a.type() == typeid(int)) {
std::cout << boost::any_cast<int>(a) << std::endl;
}

当定义了类型时这很容易,但是当类型未定义时(即因为它的值尚未设置)我将如何获得相同的结果。

Value b;

if(b is undefined) {
std::cout << "b is not defined" << std::endl;
}

最佳答案

boost::any::empty如果没有值,将返回 true

Demo

#include "boost/any.hpp"
#include <iostream>

int main()
{
boost::any a = 42;
if (!a.empty())
std::cout << "a has a value\n";

boost::any b;
if (b.empty())
std::cout << "b does not have a value\n";
}

或者,您可以像第一个示例中那样使用 boost::any::type,如果没有值,它将返回 typeid(void) :

Demo 2

boost::any a = 42;
std::cout << std::boolalpha << (a.type() == typeid(int)) << std::endl; // true

boost::any b;
std::cout << std::boolalpha << (b.type() == typeid(void)) << std::endl; // true

关于c++ - boost::any 如何检查空值/未定义值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59580366/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com