純粋な仮想関数f()
を持つクラスBase
があります。別のクラスDerived
はBase
に由来します。私はf()
からDerived
に電話します。 g ++を使用すると、リンカーからエラーが出ます。派生クラスがベースの純粋仮想関数を呼び出すときにg ++がエラーになるのはなぜですか?
[[email protected] tmp]$ g++ pure_virtual_function_call.cpp
/tmp/ccGQLHi4.o: In function `Derived::f()':
pure_virtual_function_call.cpp:(.text._ZN7Derived1fEv[_ZN7Derived1fEv]+0x14): undefined reference to `VirtualBase::f()'
collect2: error: ld returned 1 exit status
エラーがリンカーによってキャッチされたようです。なぜコンパイラはこのエラーを報告しなかったのですか?なぜそれをリンカーに任せていますか?それは純粋仮想関数を呼び出すとエラーではありません
ソースコードを表示してください。そうすれば理解しやすくなります。 –
サンプルコードを示してください。それがなければ、答えるのが難しいでしょう。 –