从QString *转换为QString&

时间:2013-02-28 11:19:42

标签: c++ pointers reference implicit qstring

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

我有一个功能:

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

我正在使用它:

QStringList::const_iterator myQStringList.begin();

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

我的

出错了
QString( *(myVar + 1)))

指定找不到匹配函数。

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

1 个答案:

答案 0 :(得分:4)

在此次电话会议中

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

参数是临时的QString。你不能将非const引用绑定到temporaries,你需要更改isFlag来获取const引用:

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

如果您不能使用const引用,则应创建QString,然后将其传递给函数:

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

以上所有假设QString可以从*(myvar +1)构建,这又是一个临时的。