代码1
QString str1( "Data" );
ser.Push( str1 );
代码2
ser.Push( QString ( "SpectrumData" ) );
ser的Push定义如下
virtual bool Push( QString& strName, int nIndex = -1 );
这两个语句不等价吗,代码1没有错误可以正常运行,代码2直接报错了:
error: no matching function for call to 'QSerializeStream::Push(QString)'
ser.Push( QString( "SpectrumData" ) );
求解啊
------解决方案--------------------
不一样,去掉引用
------解决方案--------------------
建议写成const QString&
非常方便。
------解决方案--------------------
嗯,这种用法是 C++ 标准不允许的,临时变量不能绑定到非 const 引用。 不过MSVC对这种问题却不报任何错误,非常郁闷。
------解决方案--------------------
QString()返回的是QString类型
push(QString&,int),第一个参试是引用 ,不一致了
------解决方案--------------------
在函数里不能引用临时变量。