Прежде всего, toStdString создает объект std :: string как временный.Поэтому, естественно, вы не можете извлечь из него ссылку, вы должны сохранить результат в значении или продлить его время жизни с помощью константной ссылки.
Однако, для того, что вы делаете, предполагая, что toReturn
является строго выводомпараметр и что LoadString выполняет фактическую работу:
int myClass::LoadQString(const QString &tagName, QString &toReturn)
{
string tag = tagName.toStdString();
string ret;
int result = LoadXMLAttribute(tag, ret);
toReturn = QString::fromStdString(ret);
return result;
}
Если toReturn
является не только выходным параметром, но и входным (я рекомендую избегать этого, так как это довольно запутанная практика проектирования):
int myClass::LoadQString(const QString &tagName, QString &toReturn)
{
string tag = tagName.toStdString();
string ret = toReturn.toStdString();
int result = LoadXMLAttribute(tag, ret);
toReturn = QString::fromStdString(ret);
return result;
}
Довольно просто.Преобразовать из QString в std :: string, вызвать вашу функцию, которая принимает std :: strings, сохранить возвращаемое значение и преобразовать выходной параметр (ret) обратно в QString, назначенную вашему выходному параметру (toReturn).