C++相談室 part142at TECH
C++相談室 part142 - 暇つぶし2ch541:デフォルトの名無しさん
19/05/12 11:19:05.13 k8bUqGvO.net
>>539
>int *p = &a[5];
これは多分だめで、ポインタ値としての存在なら許される
int *p = a+5;

542:デフォルトの名無しさん
19/05/12 11:53:09.39 nuZIUjqi.net
ややこしいからoperator <<を定義しようw

543:デフォルトの名無しさん
19/05/12 15:25:00.10 8/5ODvoI.net
VC++だと
std::vector<T> a; &a[a.size()]はoperator[]のassertionに引っかかるね

544:デフォルトの名無しさん
19/05/12 22:25:11.86 yr8YjJOU.net
std::transformって並列処理されてますか?

545:デフォルトの名無しさん
19/05/12 23:20:05.82 jFoQmc6B.net
c++17のparallel版使えば並列実行されるかもしれない

546:デフォルトの名無しさん
19/05/13 01:24:36.27 RKe/NLvg.net
visual studioでC++17にしたけどいまいち並列版の使い方が分からなかった
普通にfor回すのと、OpenMP使ってfor並列化するのと、transform(非並列)使うの比較したら
OpenMP>普通にfor≧transform だった

547:デフォルトの名無しさん
19/05/13 20:49:38.54 YS57w6Jq.net
おとなしくpthead使えよ。

548:デフォルトの名無しさん
19/05/13 20:56:12.40 WUu3P+2G.net
非並列使ったならそりゃそうなるだろ

549:デフォルトの名無しさん
19/05/16 02:02:33.17 1v50lv4I.net
struct AとAを継承したstruct Bがあって
Aの内容をBの共通部分にコピーする方法ってないですか?
A a;
B b = a;
みたいにしたいんですけど親を派生先にキャストはできないので困ってます

550:デフォルトの名無しさん
19/05/16 02:06:57.91 mZDDPYlt.net
struct B : public A
{
B* operator=(const A& a){ this->hoge = a.hoge;}
};
これ初期時にも使えるんかな

551:デフォルトの名無しさん
19/05/16 02:25:05.62 1v50lv4I.net
コピーコンストラクタが実装できたとしてメンバ変数は1個ずつコピーするしかないですかね

552:デフォルトの名無しさん
19/05/16 02:28:08.55 mZDDPYlt.net
スライシングをさせるとか?
安全に?スライシング起こす方法ってあったっけな?
なんか危ういからやろうともしなかったが

553:デフォルトの名無しさん
19/05/16 06:25:17.13 /dAesd8e.net
cloneメソッド用意するとか

554:デフォルトの名無しさん
19/05/16 06:31:42.80 ebJ8HHSX.net
>>549
初期化時は普通にコンストラクタ初期化リストで A(a) って書けるでしょ。残りのメンバをどうするのか知らんけど。
代入なら static_cast<A&>(b) = a か b.A::operator=(a) で済みそう。

555:デフォルトの名無しさん
19/05/16 06:33:37.60 C3C4SHXA.net
普通にコンストラクタかオペレーター作ればいいんじゃね
B::B(const &A)
B::operator =(const &A)
A::operator B()
雑なキャストでよければdynamic_cast<A>でおk

556:デフォルトの名無しさん
19/05/16 06:38:27.18 C3C4SHXA.net
↑dynamic_cast<B>の間違い
B b = dynamic_cast<B>(a);

557:デフォルトの名無しさん
19/05/16 11:40:14.21 74mGoL8y.net
>>551
sturctでまとめればデフォルトコピーコンストラクタが使えるけどね。
あとはintとかPODオブジェクトだけだったらmemcpyしちゃうとかも、俺はたまにやるなw

558:デフォルトの名無しさん
19/05/16 17:20:00.24 PgzYowjZ.net
549です
解決しましたありがとうございます
以下のように書いたら思っていたことが出来ました
(派生先のコンストラクタで親のデフォルトコピーコンストラクタ呼べるの知りませんでした)
代入は現状使う予定がないので大丈夫です
B::B(const &A a) : A(a) {}

559:デフォルトの名無しさん
19/05/16 18:17:29.46 mr2QiBZl.net
その内容だったら=defaultでいいよ

560:デフォルトの名無しさん
19/05/16 21:32:58.41 /aEDSlbd.net
引数付きコンストラクタって、=default使えるの?

561:デフォルトの名無しさん
19/05/16 22:09:55.18 jJO9F8Je.net
使えないよね
うかうかっと読み過ごしてたわw


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch