- 1 名前:デフォルトの名無しさん mailto:sage [2016/11/06(日) 22:58:02.60 ID:dU5z27As.net]
- エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。 ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。 【アップローダー】(質問が長い時はココ使うと便利) codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用) 前スレ 【初心者歓迎】C/C++室 Ver.99【環境依存OK】 echo.2ch.net/test/read.cgi/tech/1469177649/
- 528 名前:デフォルトの名無しさん mailto:sage [2017/03/15(水) 01:04:07.22 ID:R2Ueow1p.net]
- 古いコンパイラと自覚しつつも使ってるような人はこのスレには来ないだろ
時代遅れの遺物の話じゃ通じないし
- 529 名前:デフォルトの名無しさん mailto:sage [2017/03/17(金) 11:46:00.03 ID:pwo5j4El.net]
- 何でA、Bを()しないんだ?
- 530 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 21:37:15.77 ID:IRaGixDk.net]
- いまだに関数マクロ使ってるようでは
()したところで五十歩百歩
- 531 名前:デフォルトの名無しさん mailto:sage [2017/03/25(土) 22:37:56.47 ID:9zWIhzFx.net]
- >>460
>>465 宣言とかいろいろ確認してやっぱソースはおかしくないよねってことで サポートに調べてもらったら理由はわからないけど正しく動作する修正方法がわかったって連絡があって 最終的には詳細は書けないけどコンパイラのバグだった
- 532 名前:デフォルトの名無しさん mailto:sage [2017/03/26(日) 08:58:38.45 ID:4rESVRzB.net]
- ここはお前の日記を垂れる場所じゃない
「サポートによるとコンパイラのバグだった」で済むのに アレやってコレやってを書くな低能
- 533 名前:デフォルトの名無しさん mailto:sage [2017/03/27(月) 10:03:34.57 ID:wSWIgauQ.net]
- 事後報告あると参考になっていいんだけどな
今回は本人以外に状況がわからないから事後報告されてもw
- 534 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 03:06:01.35 ID:6sTQLdA2.net]
- codepad.org/KMQH3TsZ
ポインタをメンバに持たせた場合のget/setの書き方が分かりません getの方は、ポインタを返すときに返した先で値を変えられないようにconstを付けたのですが、 sizePlus10のような関数を呼びたい場合に、const_castを付けて呼ぶことになってしまいました 値の変更をするのでsetを通してやるのが良いと思うのですが、何か良い書き方ありますか? また、setの方は、一括で設定させることはできるのですが、 data->id、data->sizeの値を個別に設定したい場合、何か良い書き方はありますか? コメントの部分のようにsetメンバ関数を何個も書く方法しか思いつきません
- 535 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 07:50:43.79 ID:GtG5BmiK.net]
- getDataの結果を修正したいのだから
杓子定規にgetDataの戻りにconst付けるのを止めればいいのではないか そう言えばC++17(ドラフト)もstring::dataの戻りが非constに修正されたような
- 536 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 08:08:59.00 ID:KJlpKUaR.net]
- memcpy w
- 537 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 10:48:22.67 ID:JHpE2Dpf.net]
- >>525
一般論として形でただ覚えるのではなくて意味を理解しよう 理解があやしいから設計の一貫性がなく混乱してるようにみえる ・Dataをポインタで所有するのはなぜ ・ゲッター/セッターを使ってアクセスするのはなぜ ・ゲッターで返す値にconstをつけるのはなぜ ・sizePlus10がData*を受けとるのはなぜ MyClassの設計方針にあわせるならsizePlus10をDataではなくMyClassを受けとるようにして void sizePlus10(MyClass & mc) { Data newdata = { mc.getData()->id, mc.getData()->size + 10 }; mc.setData(newdata); } あるいは別の関数を作って void MyClassSizePlus10(MyClass & mc) { Data newdata = *mc.getData(); sizePLus10(&newdata); mc.setData(newdata); } これが変だとか非効率だとか思うなら MyClassの設計が要求にあってないのでそっちを変更する
- 538 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 20:11:34.52 ID:irpIFLVN.net]
- >>528
おまえは質問の意図を理解しよう >>525 そのsetgetでいいんじゃない?ただそのgetは俺だったらreferにするな ついでにsetget両方使えるようにdata* operator->()みたいなの実装かな。というかむしろそっちでアクセスする方向にするな あとはattachdetach作っておいてm_dataを置換できるにようにしちゃうな その手のスマートポインタは至るとこで使われてるからこんなとこで聞かずにどっかのライブラリの参考にしたら? メンバのコピーはpragma pack1でstructしておいてmemcpy
- 539 名前:デフォルトの名無しさん mailto:sage [2017/03/30(木) 23:27:09.74 ID:O3+3nsIM.net]
- >>529
>メンバのコピーはpragma pack1でstructしておいてmemcpy それをすると何がいいことあるのか?
- 540 名前:デフォルトの名無しさん [2017/03/30(木) 23:45:25.72 ID:s+CP+YQd.net]
- こういえクソみたいな方法を自慢気に語り出す奴が居るところかC++の最もクソな所だよね
- 541 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/03/30(木) 23:51:55.55 ID:2hi+y029.net]
- デフォルトコピーコンストラクターとか構造体代入とか知らないんだろう。
- 542 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 00:14:17.76 ID:5j4NF4+Z.net]
- >>532
>構造体代入とか知らないんだろう ほうほう、それは何ですか?
- 543 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 01:59:49.12 ID:OFYzpq31.net]
- やべえなおい糞コードの臭いがプンプンしやがるぜ
- 544 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 02:09:29.70 ID:DQgqVTGo.net]
- >>526-529
ありがとうございます 今まではとりあえずget/setを書いてgetにはconstを付けとけば良いみたいな認識でしたが、 想定されるクラスの使われ方に合わせて適宜変更するべきでした MyClassのようなget/setの分け方をすると、 sizePlus10のような関数やsetで不便になってしまうので、 constを付けないget/set共用のものにしてそれを通してアクセスさせるのが適切でした ( getData()でアクセスする場合、Data * const getData() const { /**/ } みたいな ) とても参考になりました
- 545 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 11:52:48.85 ID:xItn/dk+.net]
- >>531
くそじゃない方法をおしえて
- 546 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 12:09:56.69 ID:c13jjk6+.net]
- C#じゃないからないでしょ
- 547 名前:デフォルトの名無しさん [2017/03/31(金) 13:26:56.75 ID:CbPadW0u.net]
- >>536
コピーは=使え というだけの話
- 548 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 13:38:11.94 ID:2wgHKgmk.net]
- >>529
> メンバのコピーはpragma pack1でstructしておいてmemcpy これ俺も理由知りたい
- 549 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/03/31(金) 17:24:06.64 ID:tvggMnLQ.net]
- typedef struct MY_STRUCT
{ int ch; } MY_STRUCT; MY_STRUCT a,b; a.ch = 0; b = a; //代入できる
- 550 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 19:17:35.19 ID:Xv9Etv1i.net]
- >>529
> おまえは質問の意図を理解しよう なんか無駄に上から目線だなぁ って思ったら > メンバのコピーはpragma pack1でstructしておいてmemcpy 単なる老害だったでござる
- 551 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/03/31(金) 19:19:25.80 ID:tvggMnLQ.net]
- 構造体の代入ができなかったのは大昔のことだ。
- 552 名前: ◆QZaw55cn4c mailto:sage [2017/03/31(金) 19:35:02.95 ID:BClOXWeK.net]
- >>540
それ,K&R1 から堕落したよね
- 553 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/03/31(金) 19:40:25.86 ID:tvggMnLQ.net]
- 構造体定義を#include <pshpack1.h>と#include <poppack.h>で囲むのは、スピードよりもメモリー効率を優先するときにする。
- 554 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/03/31(金) 19:44:56.93 ID:tvggMnLQ.net]
- あるいは構造体のレイアウトを分かりやすくするときにパッキングを指定する。
- 555 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/03/31(金) 19:46:22.60 ID:tvggMnLQ.net]
- >>543
堕落ではない。進歩だ。
- 556 名前:デフォルトの名無しさん mailto:sage [2017/03/31(金) 19:49:13.63 ID:RKtYGe+y.net]
- > スピードよりもメモリー効率を優先するときにする
20年くらい前まではそういう老人もいたね 今はメモリレイアウトを固定したい時にしか使わないけど
- 557 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2017/03/31(金) 19:58:28.84 ID:tvggMnLQ.net]
- #pragma 直接指定は礼儀が悪い、昔のやり方だ。
- 558 名前:デフォルトの名無しさん [2017/04/01(土) 02:25:44.35 ID:m99QLuku.net]
- メモリ効率だけの問題なら大抵の場合は順番入れ替えるだけで問題ないしな
- 559 名前: ◆QZaw55cn4c mailto:sage [2017/04/01(土) 07:47:47.79 ID:1ZzXEpHO.net]
- >>546
サイズが無限にのびるかもしれないものをコピーするなんてだめだよ 昔はね,構造体はポインタを介してしかつかえなかったんだよ
- 560 名前:デフォルトの名無しさん mailto:sage [2017/04/01(土) 08:31:33.23 ID:AOt54aKT.net]
- そうそう
スタックに自動変数とかも言語道断 全部staticじゃなきゃね
- 561 名前: ◆QZaw55cn4c mailto:sage [2017/04/01(土) 13:26:49.84 ID:1ZzXEpHO.net]
- >>551
スタックに自動変数はあたりまえだよ‥static おじさん,じゃないつもりなんだが‥ 構造体はポインタで扱うべきもので,実体をコピーするのはなるたけ避けたいね C++ では void f(const C &arg) って,可能ならば const と参照の縛りをできるだけいれるよね,余計なコンストラクタを走らせないために K&R1 は教育的な配慮に優れた実装だと思うんだ‥
- 562 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 14:13:23.32 ID:SQNmFUeK.net]
- SOCKADDRが一言
- 563 名前: ◆QZaw55cn4c mailto:sage [2017/04/02(日) 17:06:04.34 ID:XkKG9LQx.net]
- >>553
手元のソースをみると clientSocket = accept(serverSocket, (LPSOCKADDR)&clientSockAddr, &addrLen); とか if (connect(destSocket, (LPSOCKADDR)&destSockAddr, sizeof(destSockAddr)) == SOCKET_ERROR) { とか,構造体のポインタを渡しているね 由緒正しき Berkeley socket では,構造体をコピーするなんて教育的ではない書き方は許していないよ
- 564 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 17:31:42.61 ID:QFdfGGyb.net]
- つまり>>553はK&Rおじさんにも劣る存在
- 565 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 18:21:59.15 ID:XkKG9LQx.net]
- K&R1 おじさん,と
K&R2 おじさん は区別したまえ,若造
- 566 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 19:26:19.28 ID:QFdfGGyb.net]
- どっちも時代遅れの老人でしょ
K&Rなんて昔存在したという噂でしか知らない 万葉集とか古事記みたいなもの?
- 567 名前:デフォルトの名無しさん [2017/04/02(日) 20:22:15.39 ID:II71H9Zi.net]
- func1(a, b)
int a; long b; { }
- 568 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 22:22:37.63 ID:JMz4l+Qd.net]
- > &destSockAddr,
> sizeof(destSockAddr) 由緒正しきBerkeley Socketも昔はこういう書き方したな コイツは進歩が20年前で止まってるのか 今この書き方する奴は死刑でいい
- 569 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 23:11:21.74 ID:zmcqSa2a.net]
- 便乗で申し訳ないが、値渡し、参照渡し、ポインタ渡し、の話で
ポインタ渡しといっても、C++の場合はナマポは嫌われて、スマポを使いましょう ってことになっていると思うんだけど、これはどう渡すのが普通? スマポを値渡しするのか、参照渡しするのか はたまたスマポを剥いで、ナマポで渡すのか 個人的に統一しきれないっつーか 所有権やら生存期間やらリソース管理やらが関係してくるなら スマポで渡すI/Fじゃないとまずいだろうし 逆にそういうのが関係ないなら、スタック上の自動変数を渡したいとかも考えると ナマポで渡すI/Fのほうが都合が良かったり、どーなんだろ 一度ナマポに戻すと二度とshared_ptrに変換できないって制限がね 言語側でなんとかせずに、ライブラリで解決しようとした弊害かな ちょうどよいバカよけなんかも知らんが
- 570 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 23:13:25.39 ID:6tq4Ne3Z.net]
- 参照一択
- 571 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 23:24:57.32 ID:xNqaI0VS.net]
- >スマポを値渡しするのか、参照渡しするのか
>はたまたスマポを剥いで、ナマポで渡すのか スマポの値渡しと生保は使い分けが必要だが、スマポの参照渡しだけはアホの所業。 とスコットメイヤーが言っていたような
- 572 名前:デフォルトの名無しさん [2017/04/02(日) 23:43:46.05 ID:yhAnz0vw.net]
- >>560
shared_ptrはその名の通り所有権を共有する場合のみ使うもの で、そういう場合は値渡しでもいいよ。中でmoveすれば 所有権を共有しないなら、nullptrを許容するならナマポそうじゃないなら参照 あんまり無いけど所有権を渡した先に移動させるならunique_ptr
- 573 名前:デフォルトの名無しさん mailto:sage [2017/04/02(日) 23:58:32.77 ID:TsXu0WT4.net]
- 所有権渡したくないならunique_ptrで持っている呼び出し元がgetでナマポを渡すかdereferenceして参照渡すかだな
- 574 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 00:00:55.90 ID:Jbp2gIKE.net]
- ナマポで渡してもshared_ptrを再取得する方法はあるだろ
まあ前提がいるが
- 575 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 00:34:15.74 ID:qQvnlfYK.net]
- うむむ、なるほど
ポインタらしき物にこれだけ多くの種類があってI/Fで縛ってしまうのは 一見面倒そうで、最近の流行というか静的型言語的には 型安全と見るべきなんだろうかしら 安易なGC言語より良いかもしれん、単純に情報量は多い また一つC++が好きになった うっかり循環参照したら怖いとか コンパイラのバージョン違いでSTLやmallocの実装に 差異が有ることを前提に組まなきゃならないとか、玉にキズもあるけれど
- 576 名前: ◆QZaw55cn4c mailto:sage [2017/04/03(月) 06:55:53.48 ID:VwtRd/3a.net]
- >>559
C/C++ で生書きするなら今もおなじだよ
- 577 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 07:40:50.83 ID:dyU+EMvQ.net]
- 型に対してじゃないのに括弧つけるの?
- 578 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 08:48:24.23 ID:WaUkCV9r.net]
- そこはインデントや{}の位置が人によって違ったりするアレだろ
- 579 名前: ◆QZaw55cn4c mailto:sage [2017/04/03(月) 19:32:41.84 ID:VwtRd/3a.net]
- >>557
K&R2 は C89 準拠だよ‥C89 が時代遅れだというけれども,いろんなことは C89 のときからやってきていて,C99 で追認された,というだけだよ
- 580 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 20:29:22.04 ID:5hra1L5C.net]
- >>570
あいわかった お前は今後「K&R1おじさん」(略して「K&Rおじさん」)な どうせ定数defineや関数マクロまみれなんでそ
- 581 名前: ◆QZaw55cn4c mailto:sage [2017/04/03(月) 21:53:46.44 ID:VwtRd/3a.net]
- >>571
略しないほうがいいよ‥ K&R2 おじさん=C89 はまっとうなCer, K&R1 おじさんは時代遅れ,この二つは全然違うよ
- 582 名前:571 mailto:sage [2017/04/03(月) 22:02:42.26 ID:ldINtwle.net]
- >>572
つまりお主(K&R1おじさん)は K&R2おじさんが自分と一緒くたにされることを 申し訳ないと感じてるのだな!? (>543) > それ,K&R1 から堕落したよね (>550) > サイズが無限にのびるかもしれないものをコピーするなんてだめだよ (>552) > K&R1 は教育的な配慮に優れた実装だと思うんだ‥
- 583 名前:デフォルトの名無しさん mailto:sage [2017/04/03(月) 22:14:40.64 ID:Vb9tETQW.net]
- voidを返す関数には感心したな
生成されるコードは大して変わらないかも知れんけど
- 584 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 01:00:11.73 ID:jC2xfRDP.net]
- 関数プロトタイプを除けば、K&R1で十分かもしれないな
voidを返す関数? int でいいんだよ
- 585 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 15:11:19.04 ID:AeH3x9f/.net]
- 戻り値をどうするかはcallerの勝手だからな
- 586 名前: ◆QZaw55cn4c mailto:sage [2017/04/04(火) 19:47:09.26 ID:xNF4clmU.net]
- ");
//]]>-->
- 587 名前:rer" target="_blank">>>575
確かに関数プロトタイプは有用だね,これがないと結構ミスるかもしれないね void を返す関数?int でいいんだよ []- [ここ壊れてます]
- 588 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 20:27:50.00 ID:/PIYb7TP.net]
- int funca01(...);
int funca02(...); int funca03(...);
- 589 名前:デフォルトの名無しさん mailto:sage [2017/04/04(火) 23:08:17.42 ID:YUY8Mb54.net]
- 老人は意味とか概念を理解しようとしないから嫌
「bool? intでいいだろ」 「forループ?本質はgotoと同じ」 「enumなんてintでいいだろ」 ホントもう存在が害悪
- 590 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 00:33:27.19 ID:DVg/5L4N.net]
- >>550
何が「昔はね」だよw Qちゃんその当事Cなんて触ってなかったろ? アンタ最近(たかだか数年?)プログラミングで遊び出しただけの人でしょ
- 591 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 02:38:54.31 ID:ZJf7oEgw.net]
- >>579
「static const intなんてenumでいいだろ」 こうですね
- 592 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 04:30:52.52 ID:ni2ET+sb.net]
- 奴らは#defineだ
- 593 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 08:14:48.69 ID:Bh5NPBNH.net]
- マジックナンバー直書きでしょ
- 594 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 08:19:06.54 ID:qVk1sCwA.net]
- K&Rだと〜
c89だと〜 過去の異物がまだ現役だと信じて話してけるのがうざい
- 595 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 09:06:55.68 ID:ncDYJBnp.net]
- それ言うならC自体が。
いまさらC++と互換性のないCを選ぶ理由がない。
- 596 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 10:35:04.67 ID:k0RY104y.net]
- >>585
C++と互換性のないCってどんなの?
- 597 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 19:40:11.14 ID:IM5122PI.net]
- ベターC的な所全般だな
範囲forとか2進リテラルとかスレッドライブラリとか参照とか Cにはnullptrすら無いし細かいところでは条件演算子が右辺値とか ようするに別言語 オーバーロードに対するtgmathとかもう糞の臭いしかしない
- 598 名前: ◆QZaw55cn4c mailto:sage [2017/04/05(水) 19:44:22.68 ID:bDXscs5n.net]
- >>585
たしかに,C99 の数々の改悪は C++ との互換性を考慮していない悪手の連発,ほとほと困ってしまう >>584 C++ とほどほどの交換性のある C89 が最良だよ
- 599 名前: ◆QZaw55cn4c mailto:sage [2017/04/05(水) 19:46:32.21 ID:bDXscs5n.net]
- >>580
「K&R1 は構造体は基本的にポインタでしか扱えない」制限なんて,使ってもいなかったらわからないだろう?
- 600 名前:580 mailto:sage [2017/04/05(水) 20:02:06.85 ID:DVg/5L4N.net]
- え?Qちゃんてサンデープログラマじゃないの?
職業プログラマでもないし プログラミング暦せいぜい10年未満だと思ってた
- 601 名前: ◆QZaw55cn4c mailto:sage [2017/04/05(水) 20:07:28.87 ID:bDXscs5n.net]
- >>579
>「forループ?本質はgotoと同じ」 そんなことはいわないとおもうよ,K&R1 の時代から for はあるしね きがつくと for(;;) { } と break だけで書いてたりするのはあるかもね,while 使いにくいとか,do while なんかマクロの中でしかつかわない,とかさ enum? #define でいいとおもうよ‥
- 602 名前: ◆QZaw55cn4c mailto:sage [2017/04/05(水) 20:08:45.69 ID:bDXscs5n.net]
- >>590
サンデーだよ でも長いサンデーなんだ‥
- 603 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 21:26:45.75 ID:Kw8eDt7v.net]
- ニートじゃ分からんことも多いのでは
- 604 名前: ◆QZaw55cn4c mailto:sage [2017/04/05(水) 22:05:58.72 ID:bDXscs5n.net]
- たしかにそのとおりだが,K&R2 = C89 こそ必要十分,ということはわかるよ
- 605 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 22:10:26.67 ID:mGFW5fgT.net]
- そういうこと言ってるとそのうち技術についていけなくなるよ
- 606 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 22:22:23.34 ID:ncDYJBnp.net]
- C99やC11って、新しい技術とかそういうんじゃないじゃん。
- 607 名前:デフォルトの名無しさん mailto:sage [2017/04/05(水) 22:40:44.77 ID:mGFW5fgT.net]
- 規格
- 608 名前:デフォルトの名無しさん mailto:sage [2017/04/06(木) 10:47:58.81 ID:jz0x7tjm.net]
- 企画ものは好きじゃないからな
- 609 名前:デフォルトの名無しさん mailto:sage [2017/04/06(木) 16:35:26.64 ID:w+UX2Wix.net]
- ころころ変わるんだから最新もクソも無いわけだが
pakomamaはガチらしいな
- 610 名前: ◆QZaw55cn4c mailto:sage [2017/04/06(木) 20:02:44.92 ID:Uar4T1Gl.net]
- >>595
別についていけなくてもいいよ,その殆どは自分には要らないものだから それはそうと,これは!とおもう新しい技術って最近はどんなものがあるの?
- 611 名前:デフォルトの名無しさん mailto:sage [2017/04/06(木) 20:16:13.94 ID:kFToYptL.net]
- まず、C#のasyncだのawaitだのはC++にも欲しいところ
というか、取り入れる方向で議論していたような どのみちQZには使いこなせない機能だから知らなくてもよいけど 知れば発狂することだろう
- 612 名前: ◆QZaw55cn4c mailto:sage [2017/04/06(木) 20:21:15.74 ID:Uar4T1Gl.net]
- まずC#をやらないとね‥でも Java に走ってしまった‥Java に同じようなのはないの?
- 613 名前:デフォルトの名無しさん [2017/04/06(木) 22:33:11.66 ID:Ao1zg6OQ.net]
- >>601
coroutineの事なら根本的な所が違うから勘違いしないようにな
- 614 名前:デフォルトの名無しさん mailto:sage [2017/04/07(金) 20:08:34.35 ID:cdWiLUH2.net]
- 馬鹿の特長:目的/機能の違いと実現するための実装の違いの区別がつかない
- 615 名前:デフォルトの名無しさん mailto:sage [2017/04/08(土) 12:56:12.29 ID:TFmwEDa6.net]
- C#のawaitはGUIのスレッドを意識出来るので有用だが
C++のawaitはただ裏で走らせるだけの機能的には劣化版な気がしてならない
- 616 名前:デフォルトの名無しさん mailto:sage [2017/04/08(土) 13:14:20.88 ID:bfo0YVHI.net]
- >>605
c++で標準的なgui使うとすると何になるの?
- 617 名前:デフォルトの名無しさん mailto:sage [2017/04/08(土) 13:49:52.49 ID:xnWSKOe7.net]
- >>605
そりゃ C++ と C# のポリシーの違いだろ
- 618 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 22:32:13.26 ID:nTEmq1X3.net]
- C使ってる人で変数宣言を途中に書く人いる?
やめた方がいい?
- 619 名前:デフォルトの名無しさん mailto:sage [2017/04/09(日) 23:00:21.55 ID:gthRNL4S.net]
- むしろそうして欲しいかな
勿論ブロックスコープは意識してる前提で
- 620 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 09:11:56.63 ID:ezi5K97R.net]
- 初期のCはブロック先頭しかコンパイルが通らない
コンストラクタも型推論もないのに途中に置くメリットが少ない 初期化漏れというモンスターの隠れ家になりやすい
- 621 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 10:33:55.73 ID:L6e5ZQwW.net]
- 一応Cで書くときは関数ブロック直後に書いてるけど、それはそれでforで使うiとかを使い回す事になるから、C++みたくプログラマの良識を信じて(ブロックを意識して変数宣言すると信じて)、好きな場所で宣言出来た方が正解なんだろうな。
- 622 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 10:35:17.63 ID:L6e5ZQwW.net]
- 出来た方がと言うか、今は出来るんだから、した方が正解に訂正。
- 623 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 12:59:25.70 ID:Hdztr2ik.net]
- 出来ることと乱用していいことはイコールでない
一瞬だけの一時変数を直前で宣言するのならありだけど 関数全体で使うなら頭で宣言すべきだし、そもそも中間で宣言するような長い関数は 短くなるよう見直すべき
- 624 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 13:04:43.28 ID:xSRtCFhF.net]
- 魔法の言葉
ケースバイケース
- 625 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 19:32:18.15 ID:UiWlchtO.net]
- スコープは可能な限り狭く
おじいちゃんの遺言
- 626 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 19:38:55.23 ID:PNQsiXg9.net]
- 初期化漏れはブロック先頭でしかかけない方が起こしやすいだろう
長い範囲で使う変数でも、変数ははじめて使うところで宣言した方が分かりやすいしバグも減る。
- 627 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 20:04:35.98 ID:Z/bjVn5R.net]
- 初期化忘れ防止はどこで宣言したってあんま関係ないというか
大差ないだろうな実際 必要になった時点で宣言するってことでよいと思う さもないと上手くいかない場合もあるし いちいち使いもしない「ダミーの値」で初期化するのは馬鹿らしいし 余計にバグりそう
- 628 名前:デフォルトの名無しさん mailto:sage [2017/04/14(金) 20:13:31.25 ID:Z/bjVn5R.net]
- auto result = func();
まぁこういう風にしたいわな int result = 0; ・・・ result = func(); ↑その「0」って初期化値は何なんですか、何を意味した「0」なんですか では0の代わりに1で初期化したらどうなるんですか この初期化値の意味は一体何なんですか ってことになるしな 結局「0」とか「1」とかの初期化値はダミーでありプログラム上なんの意味もなかったりするし 逆に初期化値に意味がある場合もあるから余計にややこしくなる bool flag = false; if( func() ) { flag = true; } これらを区別したいから必要になった個所で宣言に一票
|

|