問題タブ [copy-constructor]
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++ - コピーコンストラクターの問題
ステートメントを使用してコピーコンストラクターを使用しようとしました:
しかし、コピーコンストラクターは呼び出されていません。g++ 4.1.0 を使用しています。クラスに X(const X&) コンストラクターと X(x&) コンストラクターの両方を設定しました。
これは機能するはずですか、それともコードで非常に基本的な問題を抱えていますか?
クラスの私のコードは
A a = A();または を使用して使用する
A a = A(100);と動作しませんが、使用するとA a(b);正常A a = b;に動作します。
私が見逃しているポイントは何ですか?ウィキペディアによると、うまくいくはずですが、私の場合はうまくいきません:(。
すべての回答とコメントを前もって感謝します。
c++ - このコピー コンストラクターの何が問題になっていますか?
私はツリーのコピーコンストラクターを考え出そうとしています。私はかなりの数の提案を見つけました。
これは私に興味を持った。
とはif (TreeNode* tmp = new TreeNode)どういう意味ですか?
それ以外は問題ないようです。うまく機能しません。
何が問題なのですか?
上記の例は、このサイトからのものです。
c++ - C ++:コピーコンストラクターに関する質問
ポインタthisを初期化するために使用するクラスがあります。void*しかし、問題は、そのクラスのインスタンスを値で渡すと、ポインターがスタック上の新しいアドレスに変更されないことです。そこで、コピーコンストラクターをオーバーライドして、ポインターを新しいアドレスの。に再割り当てすることを考えましたthis。しかし、私は通常コンストラクターパラメーターによって取得するスーパークラスコンストラクターを呼び出すための変数が必要ですが、コピーコンストラクターにはそれらがありません...
私はよく説明したと思います...
したがって、問題は次のとおりです。ポインタの再割り当ての部分を追加するデフォルトのコピーコンストラクタの手順を維持できますか?または、より良い選択肢はありますか?
ありがとう
ここにいくつかのコードがあります:
何処か別の場所:
linq - linq グループ化でのオブジェクトの複製 - コピー コンストラクターの代用
LINQ でグループ化したいカスタム オブジェクト (アセット) のコレクションがあります。カスタム オブジェクトには、id、name、cost プロパティなどの標準プロパティがあります。グループ化するときは、グループごとにコストを計算したいので、次のようなちょっとしたトリックを使用しています。
わかりました、ここではすべて問題ありません。しかし...注文プロパティも初期化するために、コピーコンストラクターとコスト計算を一緒に使用しています...
これで、ID ごとにグループ化されたアセットのコレクションを取得し、すべてのプロパティがグループ内の最初のアセットからコピーされ、グループ化されたコストが計算されます。しかし...これを行うには、この種のグループ化を使用するすべてのオブジェクトに対して、「すべてのプロパティの初期化」を使用するコピーコンストラクターを記述する必要があります。これは、私の場合、20以上のプロパティを持つオブジェクトがあるためオーバーヘッドです。
リンクからクローントリックを使用しようとしました:
linq グループクエリでは成功しませんでした。
私の質問:これを達成するためのより良い/よりエレガントな方法はありますか?
ありがとうございました
c++ - 'std::string' から非スカラー型への変換が要求されました
クラスの実装に問題があります。std::string から初期化できるはずです。そこで、コピー (?) コンストラクターを作成しました。
CVariable のオブジェクトを作成しようとしています:
次のエラーが表示されます。
それを修正する方法は?
次のように正確に何かを許可するソリューションを探しています:
編集:(ほぼ)完全なソースコードを追加:
c変数.h
c変数.cpp
main.cpp
編集: enum VARPARAM の追加
編集:OK、上記で解決しました。今、私はこれを持っています:
c++ - コピーコンストラクターに複数のパラメーターがあるのはなぜですか?
$ 12.8 / 2-'クラスXの非テンプレートコンストラクターは、最初のパラメーターがタイプX&、const X&、volatile X&、またはconst volatile X&であり、他のパラメーターがないか、他のすべてのパラメーターにデフォルトがある場合、コピーコンストラクターです。引数(8.3.6).106) '
これまでのところ、追加のデフォルトパラメータを使用してコピーコンストラクタを宣言する必要がある状況の例はありません。
複数のパラメーターを使用するこのようなコピーコンストラクターのリアルタイムの使用法を知りたい。
c++ - operator=の観点からコピーコンストラクターを実装する
operator=が正しく定義されている場合、コピーコンストラクタとして以下を使用しても大丈夫ですか?
c++ - コピーコンストラクタが呼び出されないのはなぜですか?
最初のケースでMyClass(1, 2)は、ユーザー定義コンストラクターを呼び出してオブジェクトを返すときにMyObj、コピーコンストラクターを呼び出すことを期待していました。の2番目のインスタンスのコピーコンストラクターを呼び出す必要がないのはなぜMyClassですか?
c++ - データモデル、循環参照
子午線と緯線を格納するための次のデータ構造があります。
各地図ポイントには、次のものが格納されます。
A] 地理的および空間座標、地図作成の歪みなど。
B] 北/南/東/西ノードへのポインター。
ポイント間の関係、まず子午線/平行線への所属を保存できます...
子午線のデータ構造には、子午線の経度、子午線の始点と終点、点数が格納されます。
すべてのポイントはノード リストに格納されます。
しかし、Node2DList のコピー コンストラクターの作成には大きな問題があります。Meridian/Parallel と Node2Dlist の間には循環的な依存関係があります。
コピー コンストラクターはstd::map古いポイントとリンクを使用して新しいものに置き換えますが、これは実装上の問題ではありません...ただし、クラス Meridian ポイントから古い Node2DList のポイントへのポインターの開始/終了... Node2DList コピー コンストラクターは、古いポイントを指すすべての子午線を通知する必要がありますNode2DList ポイントを変更し、すべてのポインタを新しい Node2DList ポイントに変更します。このモデルはそれを許可しません。
考えられる解決策は、子午線と平行点を指す 2 つのポインターを追加することです。
残念ながら、この提案されたモデルは良くありません。2 つのクラス間の循環参照がまだあります...誰かがそれを改善するのを手伝ってくれますか? ありがとう...
java - C++でのExceptionクラスの実装
そこで、Java Exceptionクラスに基づいて、C++用の単純な基本Exceptionクラスを作成しようとしています。すでに素晴らしいライブラリがあると確信していますが、私はこれを実稼働コードではなく練習用に行っています。興味があり、常に学びたいと思っています。Javaの例外が行うことの1つは、私も実装したいのですが、「原因」の概念です。Javaでは、原因のある新しい例外は次のようになります。
ただし、C ++では、コンストラクターへの引数として例外を渡すことが、コピーコンストラクターの呼び出し方法です。したがって、例外をコピーすることと、原因を指定して新しい例外を作成することの間には、概念的な断絶があります。明らかに、これはJavaでは問題ではありません。
私はこれを処理するための最良の方法は何であるかと思っているだけだと思います。私が持っていたいくつかのアイデアは次のとおりです。
- ダミー変数で区別する
- 新しい例外を作成し、setCause()メソッドを呼び出すだけです
- コピーコンストラクターのようなもの
Exception(Exception &)であり、原因のあるコンストラクターはException(Exception *)
ありがとう