問題タブ [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.
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 引数の署名は参照渡しです
では、なぜメッセージの送信に共有ポインタが使用されるのでしょうか?
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 で何が起こっているのか、それがどのように機能するのかを完全には理解していないため、これを行う方法を自分で (またはブーストのドキュメントを使用して) 理解できません。以前は生のポインターを使用していましたが、これは正常に機能していましたが、現時点では使用できません。
御時間ありがとうございます!
c++ - ブースト intrusive_ptr の正しい関数を使用できませんでした
カイロを でラップしようとしていintrusive_ptr
ます。
Cairo のものにはすでに参照カウントがあるので、非常に単純なラップを書きました。
ただし、 のインスタンスを作成しようとするCairoPtr
と、コンパイラが のcairo_surface_t
代わりに関数を使用したようcairo_t
です。
コンパイラが正しい関数を見つけられなかった理由がわかりません。
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 が最初にビルドされるためですか?もしそうなら、これを修正する方法に関する提案はありますか?
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 または一般的なブーストのスマート ポインターに代わるものを知っていれば幸いです。
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.hpp
typedef
出力(予想)
を使用したときに得られるこの出力はboost::share_ptr
、ctr と dtr が期待どおりに呼び出されることを示しています。