首先是免责声明。我一直在阅读关于这个话题的众多问题,但我无法让我为我工作。大多数情况下,我将我的尝试从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:这不是最令人头痛的解析(尽管它是相关的)。 –