Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt是否有自己的boost::可选方案?_C++_Qt_Boost - Fatal编程技术网

C++ Qt是否有自己的boost::可选方案?

C++ Qt是否有自己的boost::可选方案?,c++,qt,boost,C++,Qt,Boost,Qt是否有自己的boost::optional替代品,或者我应该只使用boost::optional吗?在Qt的QVariant容器上实现了它,但它不在“标准”Qt库中。Qt有“variant”类型,但不是“optional”类型。我认为代码>::可选的(或者,在新的C++版本中, STD::可选< /COD>)是一个合理的选择。 < P>强> NO>强:没有可供选择的Boo::您也可以参考此线程:似乎QVariant已经可以完成boost::optional打算做的事情。你有: bool QV

Qt是否有自己的boost::optional替代品,或者我应该只使用boost::optional吗?

在Qt的QVariant容器上实现了它,但它不在“标准”Qt库中。

Qt有“variant”类型,但不是“optional”类型。我认为<>代码>::可选的(或者,在新的C++版本中,<代码> STD::可选< /COD>)是一个合理的选择。

< P>强> NO>强:没有可供选择的Boo::您也可以参考此线程:

似乎
QVariant
已经可以完成
boost::optional
打算做的事情。你有:

bool QVariant::isNull() const
bool QVariant::isValid() const
Type QVariant::type() 
static QVariant QVariant::fromValue(const T & value)
T QVariant::value()

因此,您可以包装任何类型,检查变量是否为null或有效,甚至可以获取用于if或switch语句的类型。

在C++17中引入了std::optional:


我认为它在Qt项目中比boost项目更有用。Qt中仍然没有任何QOptional类。

当然,但QVariant是一种过度使用。它有更多的开销,并且隐藏了内容的类型。如果已经使用Qt,那么它是一个可行的选择,我怀疑它最终会被用于内存或性能开销会加剧的地方。QVariant不适合optionals的使用情况。从QVariant的docos:空变量不是单一状态,如果两个空变量不包含类似的空值,则它们在==运算符上很容易返回false。