tingsky 2015-10-23 23:42 采纳率: 0%
浏览 1061

关于Qt的Q_COMPILER_RVALUE_REFS (vs2010宏被启用)

我在VS2010编译Qt4.8.6的程序的时候提示如下错误:
代码:

QString tts = "";
QVariant qv(QString("11"));
tts = qv.toString(); // 在vs2010中这句话会编译错误, 但在vs2008中则编译正常

/* 使用如下代码段则可以绕开vs2010编译错误,但不知道什么原因
QString tempStr = qv.toString();
tts = tempStr;
*/
return tts;

错误:

error LNK2001: 无法解析的外部符号 "__declspec(dllimport) public: class QString & thiscall QString::operator=(class QString &&)" (imp_??4QString@@QAEAAV0@$$QAV0@@Z)

初步原因是:

#if defined(Q_CC_MSVC) && _MSC_VER >= 1600 《---- vs2010下 宏启用

define Q_COMPILER_RVALUE_REFS

在QString类中,有如下定义:
#ifdef Q_COMPILER_RVALUE_REFS
inline QString &operator=(QString &&other)
{ qSwap(d, other.d); return *this; }
#endif

这句:
tts = qv.toString();
实际调用就是:
inline QString &operator=(QString &&other)

调用这句话为什么会导致错误就不懂了, QString &&other 这样的用法是要达到什么效果呢,还请高手指点。

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 HLs设计手写数字识别程序编译通不过
    • ¥15 Stata外部命令安装问题求帮助!
    • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
    • ¥15 TYPCE母转母,插入认方向
    • ¥15 如何用python向钉钉机器人发送可以放大的图片?
    • ¥15 matlab(相关搜索:紧聚焦)
    • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
    • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
    • ¥50 需求一个up主付费课程
    • ¥20 模型在y分布之外的数据上预测能力不好如何解决