0

C では、dlopen() によって共有オブジェクトを動的にリンクし、dlsym() を使用して特定のシンボル (関数) のアドレスを見つけ、それを関数ポインターに割り当てることができます。

C++ では、たまたまクラス コンストラクターのアドレスを知っている場合、そこから新しいオブジェクトを作成できますか? クラスのオブジェクトを返す静的メソッドを使用することは、C ++で動的にリンクするための規則であることを認識しています。

コンストラクターのアドレスからオブジェクトを作成できるかどうかを知りたがっていました。もしそうなら、あなたは例を挙げることができますか?

前もって感謝します

4

1 に答える 1

1

できません。問題は、コンストラクターを直接呼び出すことができないことです。すべてのコンストラクター呼び出しは、コンパイラーによって暗黙的に生成されます。これは、関数ポインターを介して呼び出すことができないことも意味します。

また、コンストラクターのアドレスを取得しようとしましたが、どちらも機能しませんでした (ただし、これは簡単なハックでしたが、実際に有効かどうかはわかりません)。コンストラクターには戻り値の型がないため、次の問題は、その関数ポインターの型をどのように記述するかということでした。

于 2012-09-30T22:21:21.153 に答える