我有支持本機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