私は次のような関数を書きました:
class abc {
private :
int m_var ;
public :
int func() { return m_var ; }
};
のオブジェクト ポインターをfunc()
使用してを印刷しようとすると、次のエラーが発生します。abc
gdb
**Cannot evaluate function -- may be inlined**
インライン関数から値を印刷するにはどうすればよいですか?
ベストアンサー1
このエラーが発生したのは、func の定義をクラス本体に配置し、それが十分に小さいためです。そのため、まず、コンパイラがこの関数をインライン化しました。つまり、コンパイルにより、この関数の呼び出しのすべての出現がその定義に置き換えられ、この関数の定義は実行可能ファイルに含まれません。そして、2 番目に、プログラムで実際にその関数を呼び出さなかったため、実際には、この関数は最終的な実行可能ファイルに存在しません。
それを解決するには:
- func の定義をクラス本体の外側に置くことができます。
- プログラム内のどこからでも func を呼び出します。