gpt4 book ai didi

c++ - C++ 中 QVariant 的等价物是什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:10 34 4
gpt4 key购买 nike

我正在尝试使用 STL 将 Qt 应用程序移植到 C++。 C++ 中 QVariant 的等价物是什么? QVariant 可以存储任何数据类型——一个容纳异构的容器——不同类型的对象。但是,我必须将此应用程序移植到 C++。 C++ 中 QVariant 的等价物是什么?

最佳答案

What is the equivalent of QVariant in C++?

C++ 中的等效项称为 QVariant

撇开半个玩笑不谈,它可能是最接近 union 的,但 QVariant 远不止于此;元类型、CoW 等

实际上,如今在 STL 中禁止隐式共享,所以这也是为什么您找不到这样的副手的另一个原因。

我建议自己记下 QVariant 到底需要什么功能,然后判断它是否真的值得放弃 QtCore。

这只是来自 documentation 的友情提醒:

The QVariant class acts like a union for the most common Qt data types.

Because C++ forbids unions from including types that have non-default constructors or destructors, most interesting Qt classes cannot be used in unions. Without QVariant, this would be a problem for QObject::property() and for database work, etc.

但是,由于 C++11 类型具有构造函数和析构函数是允许的。您在这里还有另一个问题要问自己:

Do I want to support everything that Qt does or am I happy to require at least C++11?

公平地说,您还可以查看下面的以下 boost 变体,但在移植后您最终会使用 boost 而不是 QtCore。

这是对你自己的另一个判断。它们不是彼此的替代品,无论是技术上还是兼容性方面。

在这种情况下,Boost 是构建时间依赖项,而 QtCore 是运行时依赖项。 Qt 将在同一主要版本的生命周期内保证二进制(和源代码)兼容性,而 boost 可能不会像 QtCore 那样在这么长的时间内做到这一点。

无论哪种方式,最终这些选项都不是我认为您想要的纯 STL 解决方案。

关于c++ - C++ 中 QVariant 的等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27604334/

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