- 1 名前:デフォルトの名無しさん mailto:sage [2019/04/01(月) 22:17:05.84 ID:wmfpIKt/.net]
- 次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part137 (正しくはpart138) mevius.5ch.net/test/read.cgi/tech/1535353320/ C++相談室 part139 https://mevius.5ch.net/test/read.cgi/tech/1538755188/ C++相談室 part140 https://mevius.5ch.net/test/read.cgi/tech/1547326582/ C++相談室 part141 https://mevius.5ch.net/test/read.cgi/tech/1550772463/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.103【環境依存OK】 https://mevius.5ch.net/test/read.cgi/tech/1530384293/ ■長いソースを貼るときはここへ。■ codepad.org/ https://ideone.com/ [C++ FAQ] https://isocpp.org/wiki/faq/ www.bohyoh.com/CandCPP/FAQ/ (日本語) ----- テンプレ ここまで ----- - VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
- 549 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 02:02:33.17 ID:1v50lv4I.net]
- struct AとAを継承したstruct Bがあって
Aの内容をBの共通部分にコピーする方法ってないですか? A a; B b = a; みたいにしたいんですけど親を派生先にキャストはできないので困ってます
- 550 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 02:06:57.91 ID:mZDDPYlt.net]
- struct B : public A
{ B* operator=(const A& a){ this->hoge = a.hoge;} }; これ初期時にも使えるんかな
- 551 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 02:25:05.62 ID:1v50lv4I.net]
- コピーコンストラクタが実装できたとしてメンバ変数は1個ずつコピーするしかないですかね
- 552 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 02:28:08.55 ID:mZDDPYlt.net]
- スライシングをさせるとか?
安全に?スライシング起こす方法ってあったっけな? なんか危ういからやろうともしなかったが
- 553 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 06:25:17.13 ID:/dAesd8e.net]
- cloneメソッド用意するとか
- 554 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 06:31:42.80 ID:ebJ8HHSX.net]
- >>549
初期化時は普通にコンストラクタ初期化リストで A(a) って書けるでしょ。残りのメンバをどうするのか知らんけど。 代入なら static_cast<A&>(b) = a か b.A::operator=(a) で済みそう。
- 555 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 06:33:37.60 ID:C3C4SHXA.net]
- 普通にコンストラクタかオペレーター作ればいいんじゃね
B::B(const &A) B::operator =(const &A) A::operator B() 雑なキャストでよければdynamic_cast<A>でおk
- 556 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 06:38:27.18 ID:C3C4SHXA.net]
- ↑dynamic_cast<B>の間違い
B b = dynamic_cast<B>(a);
- 557 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 11:40:14.21 ID:74mGoL8y.net]
- >>551
sturctでまとめればデフォルトコピーコンストラクタが使えるけどね。 あとはintとかPODオブジェクトだけだったらmemcpyしちゃうとかも、俺はたまにやるなw
- 558 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 17:20:00.24 ID:PgzYowjZ.net]
- 549です
解決しましたありがとうございます 以下のように書いたら思っていたことが出来ました (派生先のコンストラクタで親のデフォルトコピーコンストラクタ呼べるの知りませんでした) 代入は現状使う予定がないので大丈夫です B::B(const &A a) : A(a) {}
- 559 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 18:17:29.46 ID:mr2QiBZl.net]
- その内容だったら=defaultでいいよ
- 560 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 21:32:58.41 ID:/aEDSlbd.net]
- 引数付きコンストラクタって、=default使えるの?
- 561 名前:デフォルトの名無しさん mailto:sage [2019/05/16(木) 22:09:55.18 ID:jJO9F8Je.net]
- 使えないよね
うかうかっと読み過ごしてたわw
|

|