問題タブ [boost-smart-ptr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
472 参照

c++ - 関数呼び出しの結果が参照渡しになる場合、文字列に共有ポインタが使用されるのはなぜですか?

このブースト非同期 UDP サーバーの例: http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/tutorial/tutdaytime6/src.html

http://www.boost.org/doc/libs/1_53_0/doc/html/boost_asio/reference/basic_datagram_socket/async_send_to/overload1.htmlから

第 1 引数の署名は参照渡しです

では、なぜメッセージの送信に共有ポインタが使用されるのでしょうか?

0 投票する
1 に答える
667 参照

c++ - ブースト スレッドへのブースト スコープ ポインタ

今日は、boost::scoped_ptr を使用して、boost::thread を指すようにします。

私のThread.hにはあり、私の Thread.cpp には、boost::thread の作成が行わboost::scoped_ptr<boost::thread> m_threadれる関数があります。create()試してみThread::m_thread (new boost::thread(attr, boost::bind(%Thread::run, this)));ましたが、当然のことながらうまくいきませんでした。

scoped_ptr で何が起こっているのか、それがどのように機能するのかを完全には理解していないため、これを行う方法を自分で (またはブーストのドキュメントを使用して) 理解できません。以前は生のポインターを使用していましたが、これは正常に機能していましたが、現時点では使用できません。

御時間ありがとうございます!

0 投票する
1 に答える
246 参照

c++ - ブースト intrusive_ptr の正しい関数を使用できませんでした

カイロを でラップしようとしていintrusive_ptrます。

Cairo のものにはすでに参照カウントがあるので、非常に単純なラップを書きました。

ただし、 のインスタンスを作成しようとするCairoPtrと、コンパイラが のcairo_surface_t代わりに関数を使用したようcairo_tです。

コンパイラが正しい関数を見つけられなかった理由がわかりません。

0 投票する
1 に答える
129 参照

c++ - クラスが友達として認識されない

と言う2つのクラスがfooありbarます。のコンストラクターはfoo、クラスがそれをインスタンス化することprivateのみを許可するためのものです。bar

また、私は使用していますboost::shared_ptrが、簡単にするためにここでは言及しませんでした

ただし、プログラムをビルドしようとすると、エラーが発生します

'typename boost::detail::sp_if_not_array::type boost::make_shared() のインスタンス化 [with T = bar; typename boost::detail::sp_if_not_array::type = boost::shared_ptr]':| /home/..../Projects/CodeBlocks/../bar.cpp|18|ここから必須| /home/..../Projects/CodeBlocks/../foo.h|23|エラー: 'foo::foo()' は非公開です| ||=== ビルドが終了しました: 1 つのエラー、2 つの警告 (0 分、5 秒) ===|

bar.h が最初にビルドされるためですか?もしそうなら、これを修正する方法に関する提案はありますか?

0 投票する
0 に答える
779 参照

c++ - boost::intrusive_ptr に代わるものはありますか

boost::intrusive_ptr を使用するコードがいくつかあります。std::shared_ptr よりも boost::intrusive_ptr を使用する利点は、私にとって興味深いものです。これらについては、これら2 つの ブログから読みました。

boost::intrusive_ptr を別のものに置き換えることができるかどうか知りたいです。c++11 サポートを有効にすることで、boost::scoped_ptr を std::unique_ptr に置き換えることができます。この変更の動機は、ブースト ライブラリ全体 (ヘッダーのみ) をソースにバンドルする必要があるためです。コード内のどこでもライブラリをブーストするためにリンクを使用していないことに注意してください。

誰かが boost::intrusive_ptr または一般的なブーストのスマート ポインターに代わるものを知っていれば幸いです。

0 投票する
2 に答える
208 参照

c++ - boost::scoped_ptr が BCB6 で PIMPL イディオムを防ぐのはなぜですか?

boost::scoped_ptr含まれているクラスの cpp ファイルにのみ表示される実装クラスでを使用しようとしています。包含クラスには明示的に定義されたデストラクタ (インラインではない) がありますが、私のコンパイラ (Borland C++ 5.6.4) はコンパイルに失敗します。

代わりに使用boost::shared_ptrすると、同じ例が期待どおりにコンパイルおよび実行されます。

私は何を間違っていますか?


編集:ソースコード、コンパイラエラー、および(予想される)出力をここに表示するのを忘れて申し訳ありません:

ソースコード

ファイルcheck_shared.cpp:

ファイルSmartPtrTest.h:

ファイルSmartPtrTest.cpp:

コンパイラ エラー

...undefined structure 'Impl'のようなものです (ドイツ語: Undefinierte Struktur 'Impl' )。ファイルをコンパイルすると、コンパイラはこの関数のファイルでcheck_shared.cpp停止します。boost/checked_delete.hpptypedef

出力(予想)

を使用したときに得られるこの出力はboost::share_ptr、ctr と dtr が期待どおりに呼び出されることを示しています。