来自C#背景,我有一些需要改变的习惯。我要返回一个QList< int>从一个功能。编译器错误消息是来自' QList *'到非标量类型' QList'请求。这是功能:
QList<int> toCategories(QVariant qv)
{
QList<int>categories = new QList<int>();
if(qv.isValid() && qv.type() == QVariant::List)
{
foreach(QVariant category,qv.toList()){
categories.append(category.toInt() );
}
}
return categories;
}
我很欣赏使用正确语法的文档或函数的链接
答案 0 :(得分:3)
错误指的是您试图在非指针QList
与指向QList
的指针之间进行转换。您需要使用指向QList
的指针,如下所示:
QList<int>* toCategories(QVariant qv)
{
QList<int>* categories = new QList<int>();
if(qv.isValid() && qv.type() == QVariant::List)
{
foreach(QVariant category,qv.toList()){
categories->append(category.toInt() );
}
return categories;
}
}
或者,您可以使用非指针QList
:
QList<int> toCategories(QVariant qv)
{
QList<int> categories;
if(qv.isValid() && qv.type() == QVariant::List)
{
foreach(QVariant category,qv.toList()){
categories.append(category.toInt() );
}
return categories;
}
}
由于您不熟悉C ++,我建议您查看this question。
如果我也可以指出,你列出的函数有一个问题,某个路径没有返回值(虽然我怀疑这可能是因为你只复制粘贴了一部分代码)。