从"int"到"QString*"的转换无效
invalid conversion from 'int' to 'QString*'
基本上我正在返回,试图将整数计数器返回到我的主程序,但我得到了错误消息:
invalid conversion from 'int' to 'QString*' [-fpermissive]
return counter;
即使计数器是一个整数。这可能是一个非常简单的基本问题,对此我深表歉意,但任何意见/解释都将不胜感激。
功能:
QString* MainWindow::sort(QString* a, int n, QString na)
{
int yes = 1, i;
int counter=0;
int j=0;
for (i = 0; i < n; ++i)
{
if (a[i] == na)
{
counter++;
qDebug() << "Found a duplicate of " << a[i];
yes = 0;
}
}
if (yes)
{
qDebug() << "No duplicates";
}
qDebug() << counter;
return counter;
}
为了返回指向QString
的指针,您可以使用复制构造函数在免费存储中创建一个QString
,该构造函数将接受从您的counter
创建的QString
,即int
:
QString* MainWindow::sort(QString* a, int n, QString na)
{
int yes = 1, i;
int counter=0;
//...
return new QString( QString::number( counter));
}
您的代码无法编译,因为无法将int
隐式转换为QString
。但是,您不应该将指针传递给QString
,只需返回一个QString
即可。
QString MainWindow::sort(QString* a, int n, QString na)
{
int yes = 1, i;
int counter=0;
//...
return QString::number( counter);
}
问题很简单;您的函数应该返回一个QString *
(根据QString* MainWindow::sort( ... )
),但您试图返回counter
,即int
(根据int counter = 0;
)。
C++不会隐式地将int
转换为QString *
——如果这确实是您想要做的(在这种情况下,这不是您想要做),则需要使用类似static_cast<QString *>(counter);
的方法显式地强制转换它。
然而,在您的情况下,您只是有一个不匹配,您应该决定-您想返回counter,还是想返回字符串?在第一种情况下,您需要将函数声明更改为int MainWindow::sort( ... )
(这是您在操作中说过要做的操作。)。
在第二种情况下,您需要说return a;
或类似的内容,而不是说return counter;
。然而,由于函数是在适当的字符串上操作的(即,不是在它的副本上),所以这并不是真正必要的。
您的函数被声明为返回QString*
,并且您正在返回一个整数。这是不匹配的。
我认为真正的"修复"是更正函数原型以返回整数int MainWindow::sort(QString* a, int n, QString na)
,或者如果这不在你的控制范围内,那么你就没有正确地实现函数。
整数表达式(值为0的常量整数表达式除外)不能隐式转换为指针。错误消息说明了此限制。
此外,还不清楚为什么要将计数器转换为QString指针/
- 错误:从"int"到枚举c++的转换无效
- 从 'int' 到 'int*' CPP 的转换无效
- C++ PTHREADS - 无效转换无效*(*)()到无效*(*)(无效*)
- 为什么我收到"从常量指针到指针的转换无效?
- 错误:从"int"到"int*"的转换无效[-允许].我在下面提供了我的代码,我
- 从类指针到 int 的转换无效
- C++ 错误:由于 swprintf 而从 'int' 到 'const wchar_t* 的转换无效
- 错误:从'void*'到'const uint8_t* {aka const unsigned char*}'的转换无效 [-允许]
- QTextStream的操作数到二进制的转换无效
- 从类型"void*"到函数指针的强制转换无效
- 错误:从 'char' 到 'const char' [-允许] strcat(加密,密钥[i])的转换无效;
- C++ - 从 "int" 到 "unsigned char" 的缩小转换无效
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 错误:AES 加密密钥:从"char*"到"无符号字符"的转换无效
- 模板类实例化中的指针转换无效
- 从"int"到"矢量*"的转换无效
- 从类型"void*"到类member_function指针的强制转换无效
- 在 sprintf 中从 'signed char*' 到 'char*' 的转换无效
- 另一个:从"常量类型*"到"类型*"的转换无效
- constexpr 链表 - 从 const X* 到 X* 的转换无效