创建返回QList <int> </int>的函数

时间:2012-11-06 02:54:10

标签: c++ qt

来自C#背景,我有一些需要改变的习惯。我要返回一个QList&lt; int&gt;从一个功能。编译器错误消息是来自&#39; QList *&#39;到非标量类型&#39; QList&#39;请求。这是功能:

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;
}

我很欣赏使用正确语法的文档或函数的链接

1 个答案:

答案 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

如果我也可以指出,你列出的函数有一个问题,某个路径没有返回值(虽然我怀疑这可能是因为你只复制粘贴了一部分代码)。