現在、DLLからdllexportを介していくつかのクラスをエクスポートしています。プライベートメンバーをプライベートにしてDLLに提供するヘッダーにプライベートなものは含まれません。クラスの間違ったサイズを割り当てるVisual Studio 2010のC++コンパイラ
問題は次のとおりです。コンパイラはクラスのサイズを知らないので、空のクラス(1バイトサイズ)を割り当てていると考えています。生成された.libで利用できる情報ではありませんDLLとは?プライベートデータを隠すことはできませんか?
明確にするために、DLLヘッダーが__declspec(DLLEXPORT)を使用して、クラス全体をエクスポートし、展開ヘッダ__declspecは(DLLIMPORT)
ありがとうございます。私のプライベートメンバーを隠しておくための工場が必要ですか? – Caian
@Caian:これはアプローチの1つですが、より簡単な解決策は、オブジェクトに何らかのポインタがあることをユーザーに伝えるだけですが、オブジェクトの内容の詳細は明らかにしません。ユーザーコードでオブジェクトのサイズを判断することはできませんが、(隠された)API側がユーザーのためにすべてを管理する場合は問題ありません。 – wallyk
@Caian: 'pimpl'イディオムを実装するための"ファクトリ "は必要ありません。 – Mat