0

私は STXXL でいくつかの作業を行ってきましたが、boost::noncopyable から継承するマップで問題が発生しました... このプロジェクトでは、ステートメントを使用していくつかのマップを作成します。

stxxl::map<int, mapData, CmpIntGreater, 4096, 4096> node_map((stxxl::unsigned_type)(4096 * 4), (stxxl::unsigned_type)(4096 * 3));

言うまでもなく、コンストラクターでハードコードされた値は、この問題を解決すると置き換えられますが、いずれにしてもエラーが発生します。

C2248: 'boost::noncopyable_::noncopyable::noncopyable' : cannot access private member declared in class 'boost::noncopyable_::noncopyable'

STXXL マップでこの問題に遭遇した人はいますか? または、コピー不可能なオブジェクトを操作する際の一般的なアドバイスやベスト プラクティスはありますか?

助けてくれてありがとう:)

4

1 に答える 1

0

受け入れるためにここに公式の回答を追加するだけで、私の問題は、いくつかの関数が値でマップを返し、いくつかの関数引数が値で渡されることでした。これが修正されると、それは魅力のように機能しました! したがって、教訓として、コピー不可を継承する STXXL のバージョンを使用する場合は、STXXL オブジェクトのすべてのインスタンスが、値ではなく参照によってのみ関数で使用されるようにしてください。

于 2013-10-08T15:54:51.423 に答える