【发布时间】:2017-05-25 14:33:13
【问题描述】:
找出有趣的错误:当我传递const QString& 参数然后获得const char* 指向存储在const QString& 中的数据的指针时,指针指向错误数据(某些字符在我发送到函数时似乎没有)。
LogbookNote LBHasher::makePropsFromPseudoElement(const QString& id)
{
LogbookNote rv;
if (m_ctx->currentTrim) {
const char* charId = id.toLatin1().data();
...
qDebug() << charId;
}
以及调用代码:
LogbookNote LBHasher::makePropsByNameConvention(QString id)
{
LogbookNote g;
if (id.startsWith("_ctx_")) {
g = makePropsFromPseudoElement(id);
...
}
正如您所提到的,调用方法 id 是 QString,即 QString 对象的完整副本。因此const QString& 可以是一个强引用(例如,对已删除的临时对象没有破坏)。
为什么会出现这种行为?
【问题讨论】:
-
顺便说一句...
qDebug() << qPrintable( id ) -
也许这个问题的标题需要更正?