2

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

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

4

1 回答 1

5

该错误是指您试图在非指针QList到指向 a 的指针之间进行转换QList。您需要使用指向 a 的指针,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++ 新手,我建议您查看这个问题

如果我还要指出,您列出的函数存在某个路径不返回值的问题(尽管我怀疑这可能是因为您只复制粘贴了一部分代码)。

于 2012-11-06T03:06:54.557 回答