【发布时间】:2014-11-25 17:20:10
【问题描述】:
我习惯于使用QStringList() << "a" << "b" 来快速构造一个QStringList 以传递给函数,但是当我尝试使用QXmlStreamAttributes 时,它不起作用。
这段代码编译:
QXmlStreamAttributes attributes;
attributes << QXmlStreamAttribute("a", "b");
writer.writeAttributes(attributes);
但是这个失败了:
writer.writeAttributes(QXmlStreamAttributes() << QXmlStreamAttribute("a", "b"));
失败并出现错误:
C:\Workspace\untitled5\mainwindow.cpp:18: error: C2664: 'QXmlStreamWriter::writeAttributes' : cannot convert parameter 1 from 'QVector<T>' to 'const QXmlStreamAttributes &'
with
[
T=QXmlStreamAttribute
]
Reason: cannot convert from 'QVector<T>' to 'const QXmlStreamAttributes'
with
[
T=QXmlStreamAttribute
]
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
我注意到的另一件事:
这段代码编译:
QVector<QXmlStreamAttribute> v1 = (QVector<QXmlStreamAttribute>() << QXmlStreamAttribute("a", "b"));
但是这个没有,尽管 QXmlStreamAttributes 继承自 QVector<QXmlStreamAttribute>:
QXmlStreamAttributes v2 = (QXmlStreamAttributes() << QXmlStreamAttribute("a", "b"));
失败并出现同样的错误。
知道为什么会这样吗?
【问题讨论】:
标签: c++ qt compiler-errors