問題タブ [copy-assignment]
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++ - コピー割り当てによる異なるオブジェクトのコンテナー間の自動化
std::vector<SparseElement<T,I>>
SparseElement が次のタイプのスパース ベクトルがあります。
std::map<I,T>
elements を持つスパース ベクトル a を埋めるために使用しているためstd::pair<I,T>
、SparseElement の 'index' および 'value' メンバーを変更せずにこれに関する解決策が必要です。
c++ - C ++ 11-抽象型を指すスマートポインターのコピー構造?
std::unique_ptrが好きです。これは、メモリリークを防ぐのに役立ちます。これは非常に便利です。ただし、1つの問題があります。それは、コピーの割り当てと構築が許可されていないことです。
この制限はプログラマーの安全に役立ちますが、それもかなり制限されています。コピーの割り当てと構築を使用して、std :: unique_ptrをメンバーとして持つクラスを操作する場合、問題が発生することになります。そのため、コピーの作成と割り当てを使用して、unique_ptrの周りに独自のラッパーを作成しました。これがコピーコンストラクタです:
そして、これがコピー代入演算子です:
タイプ(T)として抽象基本クラスを使用することになったまで、すべてが正常に機能しました。次のようなエラーメッセージが表示されました。
これは私を困惑させます。回避策はありますか?
c++ - このベクトル割り当てが機能しないのはなぜですか?
類似の質問:
- STL vector reserve() と copy()
- std::vector reserve() と push_back() は、resize() と配列インデックスよりも高速ですが、なぜですか?
- std::vector::resize() 対 std::vector::reserve()
これにより、セグ フォールトが発生しますが、その理由はわかりません。
c++ - クラスのコピー代入演算子
次の場合、コンパイラはコピー代入演算子を作成しません。
- クラスに、const 型または参照型の非静的データ メンバーがあります。
- クラスには、アクセスできないコピー代入演算子を持つ型の非静的データ メンバーがあります。
- クラスは、アクセスできないコピー代入演算子を持つ基底クラスから派生しています。
上記のケースでは、上記の例でケース1を理解しました。しかし、ケース2とケース3が得られないので、例を挙げて理解してください。
c++ - コピー構築または代入によるコピー後にクラス メンバーが文字化けする (ときどき)
私のクラスNRRanNormal
は正規分布確率変数を表しています。デフォルトでは、インスタンスは平均 0 および stdev 1 (つまり、標準の正規確率変数) で正規分布されます。
オブジェクトをコピーNRRanNormal
すると、コピーされた (またはコピー コンストラクターを介して構築された) オブジェクトの平均値と標準偏差が文字化けしてナンセンスになることがあります。この文字化けの原因を見つけるのに苦労しています。
テスト目的で、次の関数は特定のNRRanNormal
オブジェクトの平均値と標準偏差を表示します。
それでは、次の 4 つのケースで何が起こるか見てみましょう。
上記のステートメントの出力は次のとおりです。
ご覧のとおり、オブジェクト ( foo
) をインスタンス化するだけで、期待どおりに機能します。
今、私がするときNRRanNormal bar1 = foo;
、オブジェクトbar1
は文字化けしています。しかし、私が行うNRRanNormal bar2; bar2 = foo;
と、オブジェクトbar2
は文字化けしません。これは私を困惑させます。のようなステートメントブロックだと思いました
コンパイラによって実際にステートメントブロックに変換されます
したがって、すぐ上に書いたことが間違っていない限り、bar1
とはまったく同じメンバー値bar2
を持つ必要があるようです。しかし、上に貼り付けた出力からわかるように、文字化けしていますが、問題ありません。 bar1
bar2
どうすればいいの?
bar3
文字化けしていることにも気付くでしょう。これが同じ問題なのか、別の問題なのかわかりません。
のインターフェースと実装の簡略化されたバージョンを次に示しますNRRanNormal
。
Normaldev
構造体は Numerical Recipes 3d Edition からのものです。
コピー代入演算子またはコピー コンストラクターに何か問題がありますか?
これはNormaldev
、独自の計算を取り除いたものです。
reference - オブジェクトは D の代入でコピーされますか?
D でオブジェクトを割り当てると、コピーされますか?