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からへのポインタへの変換を試みているという事実を参照していますQListQList次のように、へのポインタを使用する必要があります。

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 に答える