不透明なポインタを次のように公開する(C ++への)レガシーCライブラリインターフェイスを使用しています
typedef void * OpaqueObject
図書館で:
OpaqueObject CreateObject()
{
return new OurCppLibrary::Object();
}
もちろん、これはこのライブラリのクライアントに型安全性をまったく提供しません。typedefをvoidポインターから構造体ポインターに変更することはまったく同じように機能しますが、少量の型の安全性を提供する必要がありますか?
typedef struct OpaqueObjectInternal_ *OpaqueObject
// OpaqueObjectInternal_ is NEVER defined anywhere in client or library code
実際には構造体を指していないのに、明示的に構造体を指していますが、アライメントの問題やその他の落とし穴について心配する必要がありますか?