QVariant 持有一个 QMap 对象,该对象将被转换为自定义类型,MyClass 或 MyClass2。
例子:
class MyClass{
int item1;
int item2;
QString string1;
AnotherClass subclass;
};
class MyClass2{
int item1;
QString string1;
AnotherClass subclass;
};
已编写函数将 QVariant 转换为关联的类
MyClass QVariantToMyClass1(QVariant);
MyClass2 QVariantToMyClass1(QVariant);
我的问题是,在模板函数中,传递函数指针的正确方法是什么?下面显示的代码返回错误'const class QVariant has no member named convFunct'
template<class T>
QList<T> QVariantToQList(QVariant & qv,T (* convFunct)() )
{
// Create the list that will hold the return values
QList<T> qListOfMembers;
if(qv.typeName() == "QVariantMap"){
foreach(QVariant const& mapMember,qv.toMap())
{
qListOfMembers.append(mapMember.convFunct());
}
}
else if (qv.typeName() == "QVariantList"){
foreach(QVariant const& listMember,qv.toList())
{
qListOfMembers.append(listMember.convFunct());
}
}
else
{
qDebug()<< "QVariantToQList currently is implemented only for QMap and QList types";
throw ;
}
return qListOfMembers;
}
这是上一个问题的后续问题 该问题与此问题之间的区别在于 T 是“MyClass”或“MyClass2”,而不是通常由 QVariant 持有的类型。