我有支持本机C++类型以及Qt类型的代码。例如,有“等效”的string
和QString
。QString通过引用问题
我有2个功能,一个需要string
的和一个需要QString
的。 QString
版本将参数转换为string
's,然后调用该函数的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()
正常工作。
感谢您的帮助!
对不起,修正了代码......我是从实际上复制粘贴的,忘了改变东西 – user869525 2012-02-27 19:47:26
@ user869525你仍然需要为'toReturn'指定'ret'来向'LoadQString的调用者传播'ret '。 – 2012-02-27 19:48:34