首先是免責聲明。我一直在閱讀關於這個話題的衆多問題,但我無法讓我爲我工作。大多數情況下,我將我的嘗試從this鏈接中解脫出來,這似乎意味着只要函數定義中有&,我就可以通過名稱將該對象傳遞給該函數。然而,我不斷收到以下錯誤:C++通過引用傳遞對象
assembler.cpp: In function ‘int main()’: assembler.cpp:56:21: error: invalid initialization of non-const reference of type ‘Symbol_Table&’ from an rvalue of type ‘Symbol_Table (*)()’ get_input(Table_obj);
assembler.cpp:30:6: error: in passing argument 1 of ‘void get_input(Symbol_Table&)’ void get_input(Symbol_Table& Table_ptr)
至於我的實際代碼,相關位如下。 get_input函數只是從文件讀取數據並創建一個不同類型的對象來處理。通過程序運行的過程中,Symbol_Table對象將會更改它的成員,所以我需要通過引用來傳遞它,而不是const,這是我能找到的唯一「解決方案」。
void get_input(Symbol_Table& Table_ptr)
{
do_stuff();
}
int main()
{
Symbol_Table Table_obj();
get_input(Table_obj);
}
我不認爲需要Symbol_Table的類定義,但如果需要,我可以編輯它。
你在代碼中顯示的參數完全被忽略,你只需調用一個自由函數。難道在你原來的代碼中,do_stuff()或get_input()是'Symbol_Table'的成員函數嗎?如果不是,我都不瞭解代碼或問題。 – user463035818
如果你只是'Symbol_Table Table_obj;'會發生什麼?最令人煩惱的解析...'Table_obj'是一個函數指針。 – 101010
@ 101010:這不是最令人頭痛的解析(儘管它是相關的)。 –