関数を評価できません -- インライン化されている可能性があります 質問する

関数を評価できません -- インライン化されている可能性があります 質問する

私は次のような関数を書きました:

class abc {
    private :
    int m_var ;
    public :
    int func() { return m_var ; }
};

のオブジェクト ポインターをfunc()使用してを印刷しようとすると、次のエラーが発生します。abcgdb

**Cannot evaluate function -- may be inlined**

インライン関数から値を印刷するにはどうすればよいですか?

ベストアンサー1

このエラーが発生したのは、func の定義をクラス本体に配置し、それが十分に小さいためです。そのため、まず、コンパイラがこの関数をインライン化しました。つまり、コンパイルにより、この関数の呼び出しのすべての出現がその定義に置き換えられ、この関数の定義は実行可能ファイルに含まれません。そして、2 番目に、プログラムで実際にその関数を呼び出さなかったため、実際には、この関数は最終的な実行可能ファイルに存在しません。

それを解決するには:

  1. func の定義をクラス本体の外側に置くことができます。
  2. プログラム内のどこからでも func を呼び出します。

おすすめ記事