最初に免責事項。私はこのトピックに関する質問の多数を読んできましたが、私は私のために働くことはできません。私はほとんどの場合、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のクラス定義は必要ではないと思いますが、必要に応じて編集することができます。タイプSymbol_Table
のTable_obj
という変数を作成しません
のコードでは、パラメータが完全に無視されているだけで、空き関数が呼び出されます。 'do_stuff()'または 'get_input()'が元のコードで 'Symbol_Table'のメンバ関数なのでしょうか?そうでない場合、私はコードも質問も理解しません。 – user463035818
'Symbol_Table Table_obj;'だけの場合はどうなりますか?最も困惑しているのは... 'Table_obj'は関数ポインタです。 – 101010
@ 101010:これは最も厄介な構文解析ではありません(関連していますが)。 –