我想使用 std::variant<Foo, Bar>
作为 QVariant
的内部值.如何做到这一点?
#include <QCoreApplication>
#include <QMetaType>
#include <variant>
enum Foo{A, B};
enum class Bar{C, D};
Q_DECLARE_METATYPE(std::variant<Foo, Bar>);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}
我收到这个错误:
error: macro "Q_DECLARE_METATYPE" passed 2 arguments, but takes just 1
Q_DECLARE_METATYPE(std::variant<Foo, Bar>);
^
最佳答案
问题是 Q_DECLARE_METATYPE
是一个宏,而宏不喜欢 ,
。
你可以传递一个类型别名
using T = std::variant<Foo, Bar>;
Q_DECLARE_METATYPE(T)
或将使用包裹在额外的 ()
Q_DECLARE_METATYPE((std::variant<Foo, Bar>));
关于c++ - 如何使 std::variant<..> 可用于 QVariant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59030593/