2011-06-22 24 views
3

実行時に関数ポインタを取得しました。これはGetProcAddress(弱い型のvoid *なので)を例に挙げてみましょう。関数の署名は実行時になります。どうすれば関数を正しく、好ましくは標準コードで呼び出すことができますか? C++ 0xの解決策はうまくいきます。私は自分の型安全性を強制する必要はありません。動的引数を使用して関数ポインタを呼び出す

+0

私は知っていると知っているが、共有オブジェクト/ダイナミックライブラリ、またはその同じプログラムの宛先機能ですか? – umlcat

+0

@umlcat:いいえ。 – Puppy

答えて

1

Er ...いいえ、できません。リフレクションのようなものはC++またはC++ 0xではありません。文字列などから型を取得することはできません。残念ながら:)

+1

しかし、関数のシグネチャに制限があり、特定の可能性があることを知っている場合、メタデータを解析して関数ポインタをそれに基づいて特定の関数(おそらく多重定義された関数)にキャストできませんでしたか? – JAB

+1

@JAB:何百万もの順列になる可能性のあるすべての過負荷を事前に生成しなければならないでしょう。 – Puppy

+0

これは、XLLを呼び出すときにExcelが行う処理です。しかし、それを行うにはアセンブラを使う必要があります。 – DangerMouse

関連する問題