我的代码既支持 native C++ 类型又支持 Qt 类型。例如,string
和 QString
是“等效的”。
我有 2 个函数,一个接受 string
的函数,另一个接受 QString
的函数。 QString
版本将参数转换为 string
的参数,然后调用该函数的 string
版本。
这是问题的一些通用代码:
int myClass::LoadQString(const QString &tagName, QString &toReturn)
{
string tag = tagName.toStdString();
string ret = toReturn.toStdString();
//string& ret = toReturn.toStdString(); //This gives me an error
return LoadString(tag, ret);
}
int myClass::LoadString(const string& tagName, string& toReturn)
{
toReturn = "hello world!";
...
}
因此,这段代码将编译并运行...但是,当我调用 LoadQString()
时,第二个参数在返回后是一个空的 QString
。您可以在我的注释行中看到我尝试使用 string& ret = ...
来获取工作引用。如果我调用 LoadString()
,然后在返回时检查 toReturn
的值,它将是“hello world!”正如预期的那样。
只是想让 LoadQString()
正常工作。
感谢您的帮助!
最佳答案
您应该在 std::string
版本调用后从 std::string
转换回 QString
int myClass::LoadQString(const QString &tagName, QString &toReturn)
{
string tag = tagName.toStdString();
string ret = toReturn.toStdString();
int retCode = LoadString(tag, ret);
toReturn = QString::fromStdString(ret);
return retCode;
}
关于c++ - QString 通过引用传递问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9471111/