2015-06-26 26 views
0

使用對象我有聲明的函數爲:如何申報使用此功能

bool getIndex(const QString itemUid, QModelIndex& index /*out*/); 

我怎麼申報對象中傳遞的指數?

我曾嘗試:

QModelIndex *modelIndex; 
getIndex(auid, modelIndex ); 

有和沒有 「*」,但我得到的編譯錯誤。

的編譯錯誤是:

用於調用的TreeModel :: getIndex不匹配功能(QString的,QModelIndex * &)

+0

[C++:參數傳遞「參考傳遞」]的可能重複(http://stackoverflow.com/questions/19827119/c-argument-passing-passed-by-reference) – NathanOliver

+2

'QModeIndex modeIndex;' – 101010

+0

什麼是你的編譯錯誤? – Steephen

回答

1

沒有*編譯不應該給你錯誤(假設你沒有像QModelIndex *modelIndex();那樣做)。

另一種方法來解決你的問題就來聲明函數像這樣:

bool getIndex(const QString itemUid, QModelIndex* index /*out*/); 

然後創建你的對象像之前參考:

QModelIndex *modelIndex; 
getIndex(auid, modelIndex); 

這樣做的缺點,雖然是您必須在使用index的任何地方更改函數,而不是像指針那樣將其視爲指針。 我覺得你的錯誤更可能出現在你的代碼的其他地方,並且是QModelIndex對象的本質。

-3

請求的理由是QModelIndex&,所以你可以叫

QModelIndex modelIndex(); 
getIndex(auid, modelIndex); 

btw:QModelIndex是一個非常苗條的對象,它很快就會失效。如果不深入洞察Qt的Model/View系統,就不應該創建指針。

+2

不,你不能。 'QModelIndex modelIndex();'不會編譯,因爲它最令人頭疼的解析失敗。 – NathanOliver

+0

那麼'QModelIndex modelIndex;'。無論如何getIndex(auid,QModelIndex())'是更好的。 – Christian

相關問題