由于我有 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;
}
Run Code Online (Sandbox Code Playgroud)
我很感激使用正确语法的文档或函数的链接
该错误是指您试图在非指针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;
}
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用非指针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;
}
}
Run Code Online (Sandbox Code Playgroud)
由于您是 C++ 新手,我建议您查看此问题。
如果我还可以指出,您所列出的函数存在一个问题,即某个路径不返回值(尽管我怀疑这可能是因为您只复制粘贴了代码的一部分)。