C++ 将QVariant分配给QVariant时应用程序崩溃

C++ 将QVariant分配给QVariant时应用程序崩溃,c++,qt4,C++,Qt4,当我调用以下函数时,它会崩溃 void RequestBuilder::setData(QVariant &data) { this->data=data; } 数据包含一个QVariantMap(数据也包含作为QVariantMap的值)。而this->data也是QVariant 下面是调用函数时的一些详细信息 QVariantMap in,out; in["name"]="nik"; out["details"]=in; out["other"]="somethin

当我调用以下函数时,它会崩溃

void RequestBuilder::setData(QVariant &data)
{
    this->data=data;
}
数据
包含一个
QVariantMap
数据
也包含作为QVariantMap的值)。而
this->data
也是
QVariant

下面是调用函数时的一些详细信息

QVariantMap in,out;
in["name"]="nik";
out["details"]=in;
out["other"]="something";
QVariant param=QVariant(out);
setData(param);
如果我传递包含基本数据类型的map,上述函数就可以正常工作

QVariantMap abc;
abc["name"]="nik";
QVariant var=QVariant(abc);
setData(var);

QVariantMap
包含非原始值时是否有差异?

您所做的是创建一个错误的
QVariant&

QVariantMap
不是
QVariant
,也不能向下转换为一,因为它不是从
QVariant
继承的

QVariantMap
是一个

您可能想做的是:

QVariantMap abc;
abc["name"]="nik";
setdata(abc["name"]);

我觉得你是多余的,重复同样的话:“这里,数据包含一个QVariantMap(数据也包含作为QVariantMap的值)。@JonathanMee我的意思是,一个
QVariantMap
被传递给
数据
。通过的
QVariantMap
在其键值对中包含另一个
QVariantMap
。请编辑您的问题以澄清。我试图回答,但用你的问题措辞,我不确定我是否回答了正确的事情。@JonathanMee我已经编辑了问题,请仔细阅读。你的代码很好。我怀疑还有另一只虫子。特别是一个与您的
QVariantMap
分配/传递方式有关的。如果它足够紧凑,也许你可以把实际的代码粘贴在这里?对不起,我的语言。但这不是我的问题。在将QVariantMap传递给
setData()
之前,我已将其包装在QVariant中。你们可以在问题中看到。