自分で作成できる.dllがあります。ライブラリ内のクラスLion
から派生したクラスがあります。Cat
これは仮想関数をオーバーライドしますLeap()
。タイプのオブジェクトを作成しLion
、タイプを期待するライブラリ関数に渡します。Cat
たとえば、を呼び出すときにCat->Leap()
、オーバーライドされた仮想関数を使用しますLion->Leap()
。
これは可能ですか?
これまでに試したことはすべて、オーバーライドされた関数が無視されることになりました。これは、ライブラリがコンパイルされるとLeap()
、への呼び出しを解決する方法がわかるためだと思います。その時点では、派生型は存在しません。または、ライブラリがタイプのオブジェクトCat
(実際にはタイプ)を参照しているため、。ではなく、Lion
を呼び出します。Cat::Leap()
Lion::Leap()
関数が仮想であるという事実は、ライブラリ内から呼び出されていても、実行時にオブジェクトのvtableを確認することで呼び出しを解決することを意味すると思いました。これは、派生関数の場合です。タイプ。
ありがとう。