1

標準によると、typeid 演算子は実装に依存するため、別のコンパイラによってコンパイルされた他のプロセスによって作成されたオブジェクトで使用するのはナンセンスです。しかし、提供プロセスが同じコンパイラによってコンパイルされているという状況はどうですか?

4

1 に答える 1

3

外部オブジェクトには、検査プロセスの空間ではなく、独自のプロセス空間内に vtable ポインターが含まれるため、おそらく機能しません。両方の実行可能なバイナリ イメージが実行されているかのように配置されたアドレス空間を形成できれば、それは可能です。同一のコマンドライン フラグで使用される同じコンパイラの同じバージョンである場合、またはプラットフォーム ABItypeidが実行時の動作を正確に指定している場合は、問題ない可能性があります。

ただし、厳密に言えば、C++ オブジェクト モデルは共有メモリに対応していません。プロセス間で送信する前にシリアル化する必要があり、受信側に存在しない可能性がある C++ 型を安全にシリアル化する方法はありません。

于 2012-04-23T22:46:58.753 に答える