2010-04-15 37 views
2

現在,我的實現按值返回事物。成員m_MyObj本身不是const - 其值取決於用戶使用組合框選擇的內容。我不是C++大師,但我想這樣做。如果我簡單地在GetChosenSourceSystem之前在decl中粘貼&。和impl。,我得到一種編譯器錯誤。如果我做一個而不是另一個 - 另一個錯誤。如果我做return &m_MyObj;。除非有強烈的需求,否則我現在不會列出錯誤。我假設一位經驗豐富的C++編碼人員可以告訴我們這裏發生了什麼。我可以忽略常量或引用,但是我想在這個過程中使它變得緊湊並且學習。const訪問器的語法參考

// In header file 
MyObj GetChosenThingy() const; 

// In Implementation file. 
MyObj MyDlg::GetChosenThingy() const 
{ 
    return m_MyObj; 
} 

回答

8

返回的對象必須是const,所以你不能從外面改變它;

// In header file 
const MyObj& GetChosenThingy() const; 

// In Implementation file. 
const MyObj& MyDlg::GetChosenThingy() const 
{ 
    return m_MyObj; 
} 
+0

你是對的+ 1 – codaddict 2010-04-15 18:08:09

+1

要記住的另一件事。如果,正如我所假設的那樣,m_MyObj是MyDlg的數據成員,請確保該引用不再保留在返回它的對象周圍。如果您嘗試訪問已刪除對象的成員,則不會發生任何問題。 – KeithB 2010-04-15 18:44:51

+0

謝謝,會做。 – 2010-04-15 19:20:04