- 190 名前:デフォルトの名無しさん mailto:sage [2011/12/24(土) 07:15:28.99 ]
- STLのstd::mapをprivateメンバとしてもつクラスをDLLの内部に持って、そのクラスをエクスポートすると、
Visual C++では、警告:C4251 が示されます。 privateとして利用している場合は、OKなのでしょうか、NGなのでしょうか。 インタフェースとして利用している場合は、std::mapの実装が異なる可能性があるのでNGというのは、なんとなくわかるのですが、 内部で利用するだけであれば問題がある理由がわからないです。 inlineを利用してアクセスするのがNGというのも良くわからないです。 この件では、ヘッダの内容を全てcpp側にコピーしても同じ警告が出ます。どうしてなのでしょうか? コンパイラがインタフェースに利用されているか判断するのが困難だからでしょうか? 「class 'std::map<_Kty,_Ty>' は __export キーワードを使って class 'info::driver::InetPromiscuousDriver' にエクスポートしてください。」 とは、どこの何に対して、__exportを追記するとエクスポートできるのでしょうか? エスパー出来れば、この辺りについて教えてください。
|

|