問題タブ [auto-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 投票する
2 に答える
1985 参照

c++ - 参照と auto_ptr

auto_ptr がある場合は、参照用に渡すことができますか?のように:

また、auto_ptrs の奇妙なコピー動作とは何ですか?

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

c++ - boost::ptr_vector および boost::any に関する問題

わかりましたので、疑問があります。これが可能かどうか知りたいです。

一般的なデータ(文字列、整数、ブール値など)を含むデータベースを使用しています。オブジェクトが構築されるか、オブジェクトのメンバーが変更されるたびに、特定のアクション (SELECT または UPDATE) を使用してデータベースにクエリを実行する必要があります。まず第一に、これは DB 関連の質問ではありません。私の本当の問題は、オブジェクトのメンバーへの boost::any のポインタを保持する ptr_vector があることです。次のようなコードで:

次に、変更したいメンバーを、引数として boost::any* を取る別のその他のクラスの関数に渡します。

その同じクラスは any* を受け入れ、次のことを行います。

Enemy_Values は ptr_vector です。したがって、Enemy_Values をメンバーとして持つこの misc_class にアクセスするとき、内部の auto_ptr が指している値を変更したいと考えています。

ここで、違反エラーが発生します。私は多くのことを試しましたが、auto_ptr のコンテナーを使用したり、boost::any で前後に変換したりするべきではないと誰かに言われました。これは可能ですか、それとももっと直感的な方法がありますか?

前もって感謝します。

0 投票する
5 に答える
262 参照

c++ - 別の値とともに新しいオブジェクトを返す

2 つの値を返したいのですが、そのうちの 1 つは新しいオブジェクトです。私はこれを使用してこれを行うことができますstd::pair:

コードを例外セーフにするために、次のことを行います。

auto_ptrただし、コピーされるものを変更せずにコピーすることはできないため、これはコンパイルされませんauto_ptr。わかりました、これはauto_ptr他のタイプのようにうまく構成できないことを意味します (もう 1 つの点で)。この場合、新しいオブジェクトを返す良い方法は何ですか?

1 つの選択肢は a を返すことでshared_ptrあり、もう 1 つは inout 参照です。しかし、私は他の代替手段を探しています。私は次のようなことができます:

より良い方法はありますか?

0 投票する
9 に答える
7286 参照

c++ - コンストラクトをコピーする必要があるクラスで std::auto_ptr を使用するにはどうすればよいですか?

fooコンストラクトをコピーしたい std::auto_ptr メンバーを含むクラスがありますが、これは許可されていないようです。課題についても同様のことがあります。次の例を参照してください。

_casと宣言することもできますmutableが、これが正しいかどうかはわかりません。誰かがより良い解決策を持っていますか?

編集

OK、期待していたような回答が得られないので、問題についてもう少し具体的に説明します。

  • タイプのオブジェクトがfooスタック上に作成され、値によってコンテナー クラス (stl ではない) に渡された後、スコープ外になります。コンテナー コードを制御することはできません。(実際には、バグのあるアクティブ キューの実装です。)
  • このbarクラスは、かなり重量のあるパーサーです。パフォーマンスが非常に低いnewためdelete、コピー構築可能であったとしても、コストがかかりすぎます。
  • barオブジェクトが作成されると、一度に 1 か所だけ所有する必要があることを保証できます。この場合、スレッド間で渡され、トランザクションが完了すると削除されます。これが、私が a を使用することを望んでいた理由ですstd::autp_ptr
  • ブースト スマート ポインターを検討したいと思っていますが、代替手段があれば、この一意性を保証したいと考えていました。
0 投票する
7 に答える
857 参照

c++ - このコードが 42 しか出力しないのはなぜですか?

このコードが「created\n42」ではなく「42」のみを出力する理由を誰か説明してもらえますか?

ところで、ソリューションでさまざまな値を使用してこのコードを試してみましたが、常に「正しい」値が得られるため、ランダムなラッキー値ではないようです。

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

c++ - std::auto_ptr、delete[]、およびリーク

このコードでメモリ リークが発生しないのはなぜですか?

WinXP sp2、コンパイラ: BCB.05.03

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

c++ - 関数から複数の auto_ptrs を返す

ヒープに 2 つの変数を割り当てて呼び出し元に返す関数があります。このようなもの:

通常、同様のケースで、1 つの変数を持つ関数がある場合、次の「ソース」トリックを使用しますauto_ptr

Create1を使用して書き直したいのですauto_ptrが、その方法がわかりません。私が理解している限り、参照によって auto_ptr を返すことはできません。それで、それはまったく可能ですか?

0 投票する
3 に答える
17950 参照

c++ - boost::shared_ptrの代わりにstd::auto_ptrを使用するのはいつですか?

すべてのコードでの使用にほぼ移行しましたが、シングルトンクラスなど、boost::shared_ptr使用するいくつかの孤立したケースがまだあります。std::auto_ptr

これが行われなかったのには非常に正当な理由があると言われましたがshared_ptr、私の人生ではその理由がわかりません。それauto_ptrは最終的に次の標準で減価償却としてマークされることを知っているので、この実装をどのように/どのように置き換えることができるかを知りたいです。

auto_ptrまた、?の代わりに使用することを検討する理由は他にありshared_ptrますか?また、将来、shared_ptrに移行する際に問題が発生することはありますか?


編集:

  1. したがって、「上記のコードで安全に置き換えることができますか」という答えでは、答えは「はい」です。ただし、パフォーマンスにわずかな影響を与えますauto_ptrshared_ptr
  2. auto_ptr最終的に減価償却としてマークされ、に移動したらstd::shared_ptr、コードを徹底的にテストして、さまざまな所有権のセマンティクスに準拠していることを確認する必要があります。
0 投票する
2 に答える
1219 参照

c++ - 別のメンバー変数を処理するメンバー変数として auto_ptr を使用するにはどうすればよいですか

私はこのようなクラスを持っています:

しかし、B ptr は異なる A オブジェクト間で共有されます。同じptrを指す他のAオブジェクトが問題なく続行できるように、Aが破壊されたときにBがオンのままになるようにauto_ptrを使用するにはどうすればよいですか。これは大丈夫ですか:

人々がこれを実装したさまざまな方法と、彼らが互いに見た問題/利点は何ですか...ありがとう

0 投票する
4 に答える
926 参照

c++ - 複数のコンテナに保存されているC++オブジェクトを効果的に削除するにはどうすればよいですか?auto_ptr?

実行中に特定の種類のオブジェクト(たとえば、「Foo」クラス)を作成して、いくつかの統計を追跡し、それらを2つのSTLマップの一方または両方に挿入するアプリケーションがあります。

Fooオブジェクトを削除する最良の方法は何だろうと思っていました。現時点での私の解決策は、map1とmap2を繰り返し処理し、Fooポインターをセットに入れてから、このセットを操作して、それぞれでdeleteを呼び出すことです。

auto_ptrを使用するなど、より効果的な方法はありますか?もしそうなら、auto_ptr <>オブジェクトはSTLコンテナに保存できないので?

前もって感謝します。