c++ - 从 QString* 到 QString& 的转换

标签 c++ pointers reference implicit qstring

我对使用指针和引用感到困惑,并且遇到了一个小问题。

我有一个功能:

bool myObject::isFlag( QString &pArgument) const { }

我正在使用它:

QStringList::const_iterator myQStringList.begin();

[...] && !isFlag( QString( *(myVar + 1)))

我收到一个错误

QString( *(myVar + 1)))

它指定没有找到匹配的函数。

但是我很确定这应该很好......你知道可能是什么问题吗?

最佳答案

在此通话中

isFlag( QString( *(myVar + 1)))

参数是一个临时的QString。您无法将非常量引用绑定(bind)到临时对象,您需要更改 isFlag 以获取常量引用:

bool myObject::isFlag( const QString &pArgument) const { 

如果您无法使用 const 引用,那么您应该创建一个 QString,然后将其传递给函数:

QString qs( *(myVar + 1));
isFlag(qs);

以上所有内容都假设 QString 可以由 *(myvar +1) 构造而成,这又是一个临时变量。

关于c++ - 从 QString* 到 QString& 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15134175/

相关文章:

excel - 如何使用 VBA 以编程方式添加引用

python - 如何实现更快的状态检查功能? Python

使用正则表达式时 C++ 程序崩溃

c++ - 如何在数组中定义 C++ 中的字符大小?

c - 即使函数完成执行后,局部变量值和地址也会保留

c++ - 引用将参数传递给函数时出现奇怪的编译错误

c# - 目录列表递归

c++ - 禁用其他应用程序对注册表项的编辑

c - 赋值从整数进行指针转换而没有强制转换,但是有强制转换

c++ - 将 const int 分配给指向 int 的 const 指针是非法的吗?