【问题标题】:Conversion from QString* to QString&从 QString* 到 QString& 的转换
【发布时间】:2013-02-28 11:19:42
【问题描述】:

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

我有一个函数:

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

我正在使用它:

QStringList::const_iterator myQStringList.begin();

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

我收到了一个错误

QString( *(myVar + 1)))

表示没有找到匹配的函数。

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

【问题讨论】:

  • 尽量不要创建临时对象,而是在你的表达式前创建QString( *(myVar + 1))

标签: c++ pointers reference implicit qstring


【解决方案1】:

在本次通话中

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

参数是一个临时的QString。您不能将非 const 引用绑定到临时对象,您需要更改 isFlag 以获取 const 引用:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    相关资源
    最近更新 更多