- 1 名前:デフォルトの名無しさん(ワッチョイ 7fc9-G+K4) mailto:sage [2016/04/03(日) 00:22:24.07 ID:ZT/2NYWz0.net]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part123 echo.2ch.net/test/read.cgi/tech/1456040187/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.97【環境依存OK】 peace.2ch.net/test/read.cgi/tech/1439849418/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
- 746 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 14:46:17.04 ID:guvuQQ9l0.net]
- C++使ってるのは移植性のためでもあるからレジスタ直接触ることなんてほぼないわ
- 747 名前:デフォルトの名無しさん (ワッチョイ 233c-/3cR) mailto:sage [2016/05/14(土) 14:52:23.85 ID:eiJc4QAX0.net]
- アセンブリだのレジスタだの、そういう低レベルな処理をプログラマが考える必要を無くしていくのがコンパイラとその設計者の仕事でしょうが。
- 748 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/14(土) 15:12:38.19 ID:K+XlGAeBd.net]
- まじかよアセンブラer大海を知らずだな
- 749 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/14(土) 15:34:48.60 ID:jHuAeQfl0.net]
- 移植のこと効力するなら、それこそソースレベルで分けていけばいい話だと思うけどね
- 750 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/14(土) 15:35:45.78 ID:jHuAeQfl0.net]
- × 移植のこと効力するなら
○ 移植のことを考慮するなら
- 751 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/14(土) 15:41:24.26 ID:XQsBVmZY0.net]
- >>729
リーナスに殺されるぞ…
- 752 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/14(土) 15:45:05.04 ID:XQsBVmZY0.net]
- 漏れの無い抽象化は言うほど簡単ではない
C++ぐらいではまだまだ低水準レイヤーの話を切り離すわけにはいかない そもそもこの言語の最初の開発動機がSimulaの高速化であって 抽象化された高水準レイヤーとCPUアーキテクチャとメモリが透けて見える低水準レイヤーの 境にあるんである
- 753 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 16:37:14.60 ID:BsF9lC3v0.net]
- 今はグラフ彩色アルゴリズムで準最適なレジスタ割り当てが出来るってばっちゃが言ってた
register使ったこと殆ど無いわ crubyのC拡張書くのに使った事はあるけど
- 754 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 16:57:46.20 ID:guvuQQ9l0.net]
- registerってキーワードの事言ってるの?
- 755 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/14(土) 17:15:25.88 ID:EHXndh+50.net]
- >>727から733まではCPUレジスターの話だったけど
突然>>736がstorage class specifierの話をし出した
- 756 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 17:18:52.05 ID:BsF9lC3v0.net]
- > アセンブリの基礎を判ってないとregisterの使い道すらわからんだろ
この文を適切に補完すると (それはCの一要素でありながら) (ry ってなるだろうからキーワードの方だと思ったけど 違った?
- 757 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/14(土) 17:27:09.65 ID:EHXndh+50.net]
- 一見その様な日本語にも見えるが、
規格では「殆どの処理系で無視されるのでdeprecated」になっていて 次期改訂のドラフト4582からも削除されてしまったキーワードについて 使い道を主張するとは考えにくい
- 758 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Z3GX) mailto:sage [2016/05/14(土) 17:31:14.33 ID:BsF9lC3v0.net]
- にほんごむずい
- 759 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/14(土) 18:05:33.36 ID:jHuAeQfl0.net]
- register キーワードはアセンブリというより、コンパイラの知識じゃないのかな
今のコンパイラは賢いから最適化して割り当てるので、 変に使うとかえって効率を落としかねないから使うなって教わった
- 760 名前:デフォルトの名無しさん (ワッチョイ 6f3c-/3cR) mailto:sage [2016/05/14(土) 18:06:21.55 ID:W/mpGy/20.net]
- >>740
>>727 がそう言うことを熟知していると仮定するのもどうかと思うが
- 761 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 18:35:40.54 ID:guvuQQ9l0.net]
- registerキーワードが無意味なのは常識だと思ってた
- 762 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/14(土) 18:36:20.83 ID:50Ljn6jM0.net]
- 無意味にスタックに積んでからすぐ取り出して使うゴミみたいなコンパイラならそれを止められるから意味ある
- 763 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) [2016/05/14(土) 20:30:12.22 ID:stGv22ss0.net]
- 組み込みの開発ってやったことないんだけど、ベンダーが提供するコンパイラ
しか使えない場合が結構あるんでしょ? そうなるとそれがゴミみたいな代物 なら >>745 だと思う。
- 764 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/14(土) 21:33:09.63 ID:guvuQQ9l0.net]
- 大抵gccベースだけどな
- 765 名前:デフォルトの名無しさん (ワッチョイ 3764-yliF) [2016/05/15(日) 06:32:49.04 ID:U+van56a0.net]
- >>742
教わった、のはいいが ちゃんと自分で再検証したか?
- 766 名前:デフォルトの名無しさん (ワッチョイ 27a8-Wsqh) mailto:sage [2016/05/15(日) 09:35:30.57 ID:IffsDtB30.net]
- >>742
言語仕様上の制約として register キーワード付きの変数はアドレスを取ることが出来なくなる。 (まともなコンパイラならアドレスを取ろうとするとエラーを通知する。) 当然だがアドレスが存在しなければならない変数はレジスタに載せられない
- 767 名前:フで、
その逆にアドレスを取らなくていい変数であることを確約することで結果的にレジスタに載りやすくなる可能性はある。 gcc などは register キーワードの有無は変数をレジスタに載せるかどうかの決定を左右しないが、 レジスタに載せることが可能な変数の選択肢が多ければ結果的に最適化しやすくなるかもしれない。 まあ、よほど速度に厳しい箇所をチューニングするのでもなければ付けなくていいと思うけどね。 [] - [ここ壊れてます]
- 768 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/15(日) 09:45:04.30 ID:WYUaDR6g0.net]
- ここはC++のスレでregisterはC++17で削除される。clangなんかだと使ってるだけで警告もでる。
よって単にregisterは使ってはいけない。それ以上でも以下でもない。
- 769 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/15(日) 10:12:20.69 ID:SQ5j33E00.net]
- ポインタになら現行でもrestrictを付けることでaliasが無いものとコンパイラに通知され、
>>749の懸念は半分無用となるが(注:アドレスをとってもエラーにはならない) 参照にもつけられるようになるんだっけ;
- 770 名前:749 (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/15(日) 10:18:51.93 ID:SQ5j33E00.net]
- 訂正
×:アドレスをとってもエラーにはならない ○:Aliasを作ってアクセスしてもエラーにはならない ていうかaliasが存在しないことの保証とか、コンパイラは宇宙の果てまでは追いきらん
- 771 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 10:42:40.03 ID:TLapgfGj0.net]
- >言語仕様上の制約として register キーワード付きの変数はアドレスを取ることが出来なくなる
大昔に聞いたような記憶がよみがえった 26年前の別の言語の仕様でな
- 772 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 10:46:36.48 ID:TLapgfGj0.net]
- >ポインタになら現行でもrestrictを付けることで
大昔に聞いたような記憶がよみがえった 16年前の別の言語でな
- 773 名前:デフォルトの名無しさん (ワッチョイ 37bf-/3cR) mailto:sage [2016/05/15(日) 12:42:51.94 ID:heRU3dbC0.net]
- >>753
C89?
- 774 名前:デフォルトの名無しさん (ワッチョイ 37bf-/3cR) mailto:sage [2016/05/15(日) 12:43:35.52 ID:heRU3dbC0.net]
- >>754
C99?
- 775 名前:751 (オッペケ Sr2f-/3cR) mailto:sage [2016/05/15(日) 12:59:06.40 ID:Ep7D2rxvr.net]
- >>755
C89は知らんけどC90では禁止されていたような 調べたらC11でも禁止されたままだった >>756 イエス、マダーム
- 776 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/15(日) 13:07:07.31 ID:vsTAFBzF0.net]
- C++じゃまだrestrictは規格的にはサポートされてないよ
C99との互換性のために書いてもエラーにせず無視することになってるけど(C++14 $17.2/2) でも殆どのコンパイラで__restrictが使えるけどね
- 777 名前:デフォルトの名無しさん (ワッチョイ 4b42-Wsqh) mailto:sage [2016/05/15(日) 13:12:53.03 ID:dHmJMeXo0.net]
- 禁止と言うことは、無視されるではなく、
エラーになる(可能性がある)って理解で良いですか?
- 778 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/15(日) 13:18:12.39 ID:vsTAFBzF0.net]
- >99との互換性のために書いてもエラーにせず無視することになってるけど(C++14 $17.2/2)
ごめん。これ嘘 GCCでもClangでもrestrictはエラーになる
- 779 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/15(日) 13:54:04.82 ID:Ep7D2rxvr.net]
- >>759
イエス、マダーム register int x; &x;
- 780 名前:デフォルトの名無しさん (ワッチョイ 87cb-Wsqh) [2016/05/15(日) 18:54:11.89 ID:vMirLtIS0.net]
- struct hoge
{ int val; }; hoge h; int* val = static_cast<int*>( &h ); のようにhoge*をint*にキャストしたら自動的に&hoge::valが得られるようにしたいんですが どうすればいいですか。
- 781 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/15(日) 18:57:44.93 ID:YfWps9FTd.net]
- そんなことをやろうとしない
- 782 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/15(日) 19:11:08.36 ID:WYUaDR6g0.net]
- ポインタからじゃなくていいならキャスト演算子のオーバーロードで出来る
- 783 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 19:16:44.98 ID:TLapgfGj0.net]
- >>762
>>763の言うとおり。別の解を探さないと、マトモな方法では難しい ideone.com/4D984F
- 784 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/15(日) 19:17:38.83 ID:jxnGY8hD0.net]
- >>762
int* val = (int*)&h;
- 785 名前:デフォルトの名無しさん (ワッチョイ afc2-1Mko) mailto:sage [2016/05/15(日) 19:19:32.41 ID:HZxVWbFB0.net]
- int* val=(int*)(&h)
- 786 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 19:31:53.73 ID:TLapgfGj0.net]
- やっぱり最も素直なのはこうだな
ideone.com/iRfjtv std::chronoのduration_castもこんな感じだろう
- 787 名前:デフォルトの名無しさん (ワッチョイ 53dc-zbyT) mailto:sage [2016/05/15(日) 19:48:04.92 ID:yfD+f9Qr0.net]
- そもそも
- 788 名前: struct hoge {int val;}; において、
hoge h; の &h と &h.val が値として一致する、つまり reinterpret_cast<int*>&h == &h.val が常に成立するって 規格で保証されてるんだっけ? [] - [ここ壊れてます]
- 789 名前:デフォルトの名無しさん (ワッチョイ 377b-1Mko) mailto:sage [2016/05/15(日) 19:52:05.11 ID:vsTAFBzF0.net]
- 保証されてるんじゃない(適当)
でなけりゃバイナリイメージのレイアウト作れない
- 790 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 19:52:30.43 ID:TLapgfGj0.net]
- その保証を得るための条件確認を>>765で書いてやったというのに…
ISO/IEC 14882:2014 9.2p19
- 791 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/15(日) 22:10:43.04 ID:TLapgfGj0.net]
- >キャスト演算子のオーバーロードで出来る
変換関数を定義することを規格で「キャスト」「演算子」「オーバーロード」と読んでいただろうか? と思って調べたが、演算子とオーバーロードは確かに微妙な書き方だった。 キャストは式の一種で、変換関数のことをキャストとは言わないな
- 792 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) mailto:sage [2016/05/15(日) 22:28:39.62 ID:8VRuH69B0.net]
- さっぱりわからんが
int* val = static_cast<int*>( h ); なら(簡単に)出来るってことか?
- 793 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) mailto:sage [2016/05/15(日) 22:35:42.94 ID:8VRuH69B0.net]
- 今気付いたんだけど、ワッチョイって結構重複するのか?
>>746は俺じゃないのにワッチョイ同じだな
- 794 名前:デフォルトの名無しさん (ワッチョイ b7bf-a45h) mailto:sage [2016/05/15(日) 22:37:30.44 ID:vFNZTgb70.net]
- こういう珍しいコード?って実際の業務だと普通にあり得ることなんですか?
- 795 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/15(日) 22:39:05.28 ID:q+e+aGMq0.net]
- >>773
普通に operator int* () & { return &val; } と定義するだけでできるでしょ?
- 796 名前:デフォルトの名無しさん (ササクッテロ Sp2f-a45h) mailto:sage [2016/05/16(月) 09:35:35.81 ID:8tgjguWIp.net]
- 右半分はブラウザのUAだからすぐ被るけど
左半分はipアドかホスト名とかだったきがするからそうそう被らんとは思うけど
- 797 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/16(月) 10:58:51.83 ID:UIK75Ntg0.net]
- template<typename T>const char* typename()
{ return typeid(T).name(); } これって実行時に変わることはないけどコンパイル時に取れないよね? コンパイル時に決定される代替の方法ないかな?
- 798 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/16(月) 11:05:06.85 ID:Wv3wWMiG0.net]
- リフレクションは(標準には)無い。
- 799 名前:デフォルトの名無しさん (ワンミングク MM9f-/3cR) mailto:sage [2016/05/16(月) 11:11:03.55 ID:bmeyzU+wM.net]
- ポインターがコンパイル時に決定されたとしてなにか嬉しいのだろうか…
特殊化で解決できないケースが思いつかない
- 800 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/16(月) 12:19:01.47 ID:5ug0//ZW0.net]
- RTTI使わないで型名を文字列化したいということでしょ
出来てもいいよね ないんだっけ? テンプレートの特殊化で解決とかは冗談だろ?
- 801 名前:デフォルトの名無しさん (ガックシ 065f-a45h) mailto:sage [2016/05/16(月) 12:47:03.24 ID:ViRuPN/26.net]
- getmodulefilenameで拾ったwchar*を、stdのstringに変換する方法はありませんか?
ウェブで調べても、systemのstringに変換してたり、wstringから変換しているものしか見つかりませんでした
- 802 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/16(月) 13:21:09.52 ID:UIK75Ntg0.net]
- >>781
>型名を文字列化したい まさにそれです。 今は実行時にvariadic templateで渡された型からエラーメッセージを生成しています。 エラーメッセージなので実行コストは問題にしていないのですが2〜3種類程templateのインスタンス化した時点で1KB以上コードサイズが増えてしまっててコンパイル時に生成できたら数十バイト程に収まるのになぁと思っての質問でした。
- 803 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/16(月) 21:35:11.73 ID:ptsyD+4U0.net]
- もう、ウンコboostを使うしか無いな
melpon.org/wandbox/permlink/AQMpoO8QkAgq9vd2 boostつかうと一気に実行ファ
- 804 名前:イルサイズが10倍に?! []
- [ここ壊れてます]
- 805 名前:デフォルトの名無しさん (ワッチョイ 2317-yliF) [2016/05/16(月) 22:32:19.16 ID:hnQ6k/Go0.net]
- 見れば見るほどRTTIはクソだね
拙速にもほどがある いつかメジャーチェンジで刷新をきぼんぬ
- 806 名前:デフォルトの名無しさん (ワッチョイ a7cf-Jrc9) mailto:sage [2016/05/16(月) 23:00:15.78 ID:ZRzqLMgu0.net]
- >>783
ひどい話に聞こえるけど、それコンパイラ何?
- 807 名前:デフォルトの名無しさん (ワッチョイ cbd4-7yL8) [2016/05/17(火) 10:42:57.44 ID:0QCad9Bp0.net]
- C#のプログラマなんだけどさあ
他人が書いたC++のソースコードを読むにあたり、まあ生き別れの兄貴なら多少違ってても雰囲気で読めるだろうとぐらいに思ってたんだけど・・・・・全然読めなくておわた テンプレート多用も堪えるけど、一番困るのはヘッダファイルが全然読めなくて意味不明な点だ 差し当たって最低限の知識を得れる本等でおすすめがあったら教えてくれんかな
- 808 名前:デフォルトの名無しさん (JP 0H6f-mfIb) mailto:sage [2016/05/17(火) 11:34:36.15 ID:eRIY89eqH.net]
- その兄はおそらく幼い頃から日本以外で生活してた
- 809 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/17(火) 12:24:41.75 ID:DLx6Jllf0.net]
- 基本的な構文がCスタイルなだけで生き別れでも何でもない他人だし
- 810 名前:デフォルトの名無しさん (ワンミングク MM9f-UkU1) [2016/05/17(火) 12:31:05.41 ID:aW8j1xwWM.net]
- ヘッダファイルが読めないって単にソースが読めないって事だからな
- 811 名前:デフォルトの名無しさん (JP 0H6f-mfIb) mailto:sage [2016/05/17(火) 12:40:39.83 ID:eRIY89eqH.net]
- たぶん boost 系のクソテンプレートだろう
- 812 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 12:42:18.92 ID:JBnvLbQwd.net]
- >>787
例えばヘッダのどんなところが読めなかった? C言語部分がわからないのか、C++特有の部分がわからないのか
- 813 名前:デフォルトの名無しさん (ワッチョイ 236c-gj/H) mailto:sage [2016/05/17(火) 12:44:01.08 ID:YEDl+1EH0.net]
- 逆に今C#初めて見たけど、そこそこ見れるな
- 814 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 13:53:10.45 ID:AYutjq9j0.net]
- C++こそが至高
- 815 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 13:54:20.44 ID:AYutjq9j0.net]
- C#は舎弟
- 816 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 13:57:07.99 ID:AYutjq9j0.net]
- そしてJava奴隷
- 817 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 15:10:49.08 ID:w5cAt2PYd.net]
- 「ヘッダファイルがぜんぜん読めなくて困る」の意味があやふやでなんとも
- 818 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/17(火) 17:47:37.73 ID:SVOYn8cOr.net]
- そもそもC++の言語仕様にヘッダファイルなどと言うものは存在しない
- 819 名前:デフォルトの名無しさん (ワンミングク MM9f-/3cR) mailto:sage [2016/05/17(火) 18:02:38.06 ID:xRsGC6W0M.net]
- >>798
これのせいで、ヘッダに何書けばいいのかとか詳しく書いてくれてる書籍が皆無っていう
- 820 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 18:31:08.64 ID:YSbkH+WYd.net]
- Googleのスタイルガイドに従っておけば良い
- 821 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/17(火) 18:32:04.81 ID:SVOYn8cOr.net]
- 例外禁止?
ノーサンキューです
- 822 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 18:53:28.33 ID:AYutjq9j0.net]
- フリーフォーマットだしヘッダのinclude自体プリプロによる前処理だし
- 823 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 19:00:13.12 ID:AYutjq9j0.net]
- ハンガリアンなんていうゴミ記法はゴミ信者が布教したもんだし
ヘッダなんていう定礎もソレと同じ 本来フリーフォーマットだし従う必要もない
- 824 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/17(火) 19:12:11.14 ID:w5cAt2PYd.net]
- 拡張子も自由だしどう呼ぼうと勝手だな
- 825 名前:デフォルトの名無しさん (ワッチョイ 4bf8-Bhie) mailto:sage [2016/05/17(火) 19:26:22.91 ID:0ndBRKVS0.net]
- 拡張子ってあれでしょ、MS-DOSの悪しき風習の一つでしょ
>>803 システムハンガリアン記法とアプリケーションハンガリアン記法の違い、知ってる?
- 826 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 19:33:40.71 ID:AYutjq9j0.net]
- 違いは知っている
どっちにしろ醜い
- 827 名前:デフォルトの名無しさん (ワンミングク MM9f-UkU1) [2016/05/17(火) 19:49:53.46 ID:aW8j1xwWM.net]
- アプリケーションハンガリアンは意味のある統一された名前付けをしようってだけのもので、それなりに合理的だと思うけどな
- 828 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 20:16:48.91 ID:AYutjq9j0.net]
- メンバー変数にm_
グローバル変数にg_ など見苦しくてコード読むのもなんか
- 829 名前:キモい []
- [ここ壊れてます]
- 830 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/17(火) 20:22:05.14 ID:AYutjq9j0.net]
- 余計なことすんなって気がする
- 831 名前:デフォルトの名無しさん (ササクッテロ Sp2f-a45h) mailto:sage [2016/05/17(火) 20:45:27.40 ID:ZLInSjXlp.net]
- メンバ変数ってスコープが明らかにローカル変数と違うから、一目でわかる識別子は価値があると思う
- 832 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/17(火) 20:52:50.22 ID:DLx6Jllf0.net]
- その話題ついこの前やったな
m_はm一字で入力候補として全部出せるからまだマシ
- 833 名前:デフォルトの名無しさん (オイコラミネオ MMdf-lVte) mailto:sage [2016/05/17(火) 21:18:01.72 ID:H7Xr8xNTM.net]
- _いれる派が多いのか
- 834 名前:デフォルトの名無しさん (ワッチョイ 87cb-Wsqh) [2016/05/17(火) 21:19:16.67 ID:5ZuXJob50.net]
- メンバの一覧表示してなんか意味あるの?
- 835 名前:デフォルトの名無しさん (ワッチョイ d35b-Wsqh) mailto:sage [2016/05/17(火) 21:20:13.79 ID:0Uq+w/x10.net]
- 俺もmとかあっていい派だな。
ただアンダースコアが助長な感じするんで、 mHogeみたいな感じで使ってるな。
- 836 名前:デフォルトの名無しさん (ワッチョイ 373d-yliF) [2016/05/17(火) 21:23:42.65 ID:n2YIPAfm0.net]
- エムバーでメンバーという駄洒落なのさ
- 837 名前:デフォルトの名無しさん (ワッチョイ 4b64-Wsqh) mailto:sage [2016/05/17(火) 21:25:33.49 ID:NhE32Twq0.net]
- いずれにせよ他人に強要するもんじゃないから
プロジェクトチーム内でコンセンサスが取れていれば何でもいいんじゃないですかね。
- 838 名前:デフォルトの名無しさん (ワッチョイ 8fc0-TzrJ) mailto:sage [2016/05/17(火) 21:35:08.37 ID:iUzOcy+l0.net]
- >>815
なんか納得した
- 839 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/17(火) 22:19:21.77 ID:xjOiIw8U0.net]
- 贅沢な名だね
お前の名は今日からtmpだ
- 840 名前:デフォルトの名無しさん (ブーイモ MM6f-/3cR) mailto:sage [2016/05/17(火) 22:28:00.80 ID:zWksk4WFM.net]
- 今日から私のことは二つ名テンプテーションと呼んでくれ
- 841 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/17(火) 22:41:23.98 ID:DLx6Jllf0.net]
- >>813
記憶があやふやであれ何だったかなあっていうときにm押せば出てくるのは便利
- 842 名前:デフォルトの名無しさん (ワッチョイ 4b64-Wsqh) mailto:sage [2016/05/17(火) 23:26:37.97 ID:NhE32Twq0.net]
- むしろただの変数は二文字以上ある時点で豪華な部類
- 843 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/17(火) 23:33:54.07 ID:xjOiIw8U0.net]
- >>821
そうでした。すみません。
- 844 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 00:11:45.44 ID:yEeXtbl90.net]
- >>808
それシステムハンガリアンだよね
- 845 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/18(水) 00:15:09.75 ID:GQGC04nZ0.net]
- MS勘違いハンガリアン
- 846 名前:デフォルトの名無しさん (ワッチョイ 87ff-gmVm) mailto:sage [2016/05/18(水) 00:31:32.12 ID:WN1OorbV0.net]
- なんちゃらウィザードで作ると、m_まで入ってるから繋げちゃうよなw
- 847 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 00:45:12.55 ID:hZVHIlqW0.net]
- メンバー明示したいならthis使えと。
そもそもグローバル変数は使うなと。 特にグローバル変数使うとコピペしたい時すげー不便。
- 848 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/18(水) 00:46:39.05 ID:bTqCK2tF0.net]
- グローバル変数って何?
- 849 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 00:47:25.65 ID:hZVHIlqW0.net]
- え?
- 850 名前:デフォルトの名無しさん (ガラプー KK8f-6Ylf) mailto:sage [2016/05/18(水) 00:49:41.11 ID:jYlR0JsWK.net]
- >>827
That is 大局なvariables.
- 851 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 00:52:22.73 ID:5/m+TFHG0.net]
- グローバル変数使うなという人は久しぶりに見た
- 852 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 00:59:32.23 ID:yEeXtbl90.net]
- 最近は当たり前すぎてわざわざ言う人居なかったよね
- 853 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 01:06:37.05 ID:5/m+TFHG0.net]
- え?
- 854 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 01:18:04.13 ID:oA47oPzz0.net]
- >>826
thisなんて忘れたってエラーにもなんにもならないんだから役に立たんわ
- 855 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 01:19:11.35 ID:hZVHIlqW0.net]
- >>833
だから、明示したい時って書いてるじゃん。 プレフィックス使ってもお堅いだけよ。
- 856 名前:デフォルトの名無しさん (ワッチョイ b79d-hNIp) mailto:sage [2016/05/18(水) 01:27:17.96 ID:Y8xrmYKy0.net]
- >>826
高脳C++使いはm_xxx/mxxx や xxx_なんて美しくない形のメンバー名にしないよな メンバー名はセンスあるxxxで、使うときにthis->xxxってするのが美しいC++だよね でも、低脳、ゆとりC++使いは美的感覚ないからm_xxx/mxxx や xxx_形を普通に使うからな 俺もだけど,orz
- 857 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 01:28:20.91 ID:hZVHIlqW0.net]
- >>835
炎上させたいのか? そういう高低の話じゃないんだが。
- 858 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 01:50:24.96 ID:oA47oPzz0.net]
- >>834
メンバ変数アクセスなのかローカル変数アクセスなのかは常にパッと見て分かるようになってるほうが良いと思うけどね メンバ関数からメンバ変数をアクセスする場合は.memberとしなければならないとかだったら良かったのになあ
- 859 名前:デフォルトの名無しさん (ワッチョイ 4be7-EA1W) mailto:sage [2016/05/18(水) 01:53:50.03 ID:hZVHIlqW0.net]
- >>837
そこ強制しちゃうのかー。 名前被らないようにしてれば大体問題ないけどねぇ。
- 860 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 02:28:40.96 ID:yEeXtbl90.net]
- >>833
プレフィックスなんて忘れたってエラーにもなんにもならないんだから役に立たんわ
- 861 名前:デフォルトの名無しさん (ワッチョイ a763-/3cR) mailto:sage [2016/05/18(水) 06:27:23.33 ID:c/4q+m1z0.net]
- 役に立たないというのは話のすり替えだな。
例えば「クラス名はPascalCaseに統一しようぜ」と言う奴に 「間違えてcamelCaseで書いてもエラーにならないから無意味」 と言ったら詭弁だろう
- 862 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/18(水) 07:06:57.31 ID:CyiE2Hpq0.net]
- >>833
ほんとこれ 強制されたいガチガチに縛って欲しいハアハア、
- 863 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/18(水) 07:08:23.39 ID:bTqCK2tF0.net]
- >>829
なにが言えればグローバル変数って認められるんだろう アクセスできる範囲(翻訳単位を越えるor越えない) 状態を持つ/変更できる 寿命(mainより長い)
- 864 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/18(水) 07:09:50.65 ID:CyiE2Hpq0.net]
- しかし正直教育型言語であるはずのパスカルでさえ
with文とかあって長ったらしい構造体メンバアクセスを省略可能にしているぐらいだから this->fooとかいちいち書いてあるC++のソースとか読んでたら目が腐りそう… やっぱm_プレフィックスぐらいの軽い奴をコンパイラが強制してくれたら嬉しいハアハア
- 865 名前:デフォルトの名無しさん (ワッチョイ 9f8b-EA1W) mailto:sage [2016/05/18(水) 07:33:52.96 ID:CyiE2Hpq0.net]
- ていうか質問なのですが、
template<class T> { ... }の定義の中で、Tが整数型限定だとして TのMSBを得るコードってどう書くのが良いのでしょうか。 Tによって変わるとはいえ本質的に定数なので、実行時コストを定数アクセス以下に抑えたい やっぱ特殊化しちゃうのが常道? 一応<limits.h>ぐらいはインクルードしているものとして const T MSB = (T)1 << ((CHAR_BIT * sizeof(T) - 1); としたらできている気がするが、、
- 866 名前:デフォルトの名無しさん (オッペケ Sr2f-/3cR) mailto:sage [2016/05/18(水) 07:53:45.73 ID:LyU/n3Wrr.net]
- まず貴様のMSBとやらの定義を訊こうか
少なくともその定数はコンパイル時に決定できるので特殊化は要らないだろう
- 867 名前:デフォルトの名無しさん (ワッチョイ 6fcc-/3cR) mailto:sage [2016/05/18(水) 07:56:24.15 ID:GQGC04nZ0.net]
- そういや int i; を書くのが面倒だからグローバルにしているとか抜かすバカシャチョウ居たな
- 868 名前:デフォルトの名無しさん (ワッチョイ 87ff-gmVm) mailto:sage [2016/05/18(水) 08:05:53.90 ID:WN1OorbV0.net]
- forループにしか使わないということかw
- 869 名前:デフォルトの名無しさん (ドコグロ MMdf-/3cR) mailto:sage [2016/05/18(水) 08:19:26.66 ID:Bv005giXM.net]
- >>846
本物のプログラマーなんだろ
- 870 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 08:47:55.80 ID:5/m+TFHG0.net]
- >>846
シングルスレッドなら何も困らないけど
- 871 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 08:49:44.59 ID:yEeXtbl90.net]
- >>842
グローバルネームスペースに置かれてる変数
- 872 名前:デフォルトの名無しさん (ブーイモ MM6f-/3cR) mailto:sage [2016/05/18(水) 12:40:24.80 ID:83U9cWaxM.net]
- >>849
いや困るでしょ… for内で関数呼び出してて、その関数の中でもfor使ってたら…
- 873 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 12:44:09.84 ID:5/m+TFHG0.net]
- >>851
そのためにi,j,k,l,m,nとかやってるんでしょ 知らんけど
- 874 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) mailto:sage [2016/05/18(水) 12:45:06.50 ID:PJk+y+uRd.net]
- >>846
そこまで言うと作り話でしょ。 事実だとしても考慮外として切り
- 875 名前:捨て []
- [ここ壊れてます]
- 876 名前:デフォルトの名無しさん (スプー Sd1f-/3cR) [2016/05/18(水) 12:45:13.34 ID:ICIQ9a1pd.net]
- azまで全部宣言しておけばいいだろ!
- 877 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 13:30:49.34 ID:yEeXtbl90.net]
- そうだ!配列とインデックス変数にして使うときにインクリメント使い終わったらデクリメントすればいいんだ!
- 878 名前:デフォルトの名無しさん (ワッチョイ d35b-Wsqh) mailto:sage [2016/05/18(水) 18:52:20.04 ID:ODcMRn4j0.net]
- 全部グローバルにした方が、どっからでもアクセスできて便利だろ。
- 879 名前:デフォルトの名無しさん (ドコグロ MMdf-/3cR) mailto:sage [2016/05/18(水) 18:54:32.39 ID:Bv005giXM.net]
- 本人面白いこと言ってるつもりなんだろうな...
- 880 名前:デフォルトの名無しさん (ワッチョイ 1362-a45h) mailto:sage [2016/05/18(水) 18:58:10.91 ID:kXIjvZGj0.net]
- 定番かもしれんが
#define private public は見たことある。 この時は好ましく無い使われ方だったが、ある意味目から鱗だった。
- 881 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 19:04:22.76 ID:oA47oPzz0.net]
- そりゃ目から何出ても不思議じゃないわ
- 882 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 20:12:25.05 ID:5/m+TFHG0.net]
- 最近それ無効じゃなかったっけ
- 883 名前:856 (ワッチョイ 1362-Wsqh) mailto:sage [2016/05/18(水) 20:26:25.13 ID:kXIjvZGj0.net]
- >>860
試しにやってみたら確かに警告出ますね。 ちなみに、これ見たのは10年くらい前でした。
- 884 名前:デフォルトの名無しさん (ワッチョイ 937b-qps8) mailto:sage [2016/05/18(水) 22:15:33.16 ID:p8whoeqx0.net]
- >>843
その手の問題ってたいていダラダラ長いメソッド書いてるのが問題ってだけ。
- 885 名前:デフォルトの名無しさん (ブーイモ MM1f-/3cR) mailto:sage [2016/05/18(水) 23:00:45.13 ID:dPKzZ46VM.net]
- >>830
いつどこで書き換えられるか分かり辛い。 再入可能なプログラムが書きづらい。 当然分かってるんだよな?
- 886 名前:デフォルトの名無しさん (ワッチョイ 377b-nbuf) mailto:sage [2016/05/18(水) 23:05:35.36 ID:oA47oPzz0.net]
- 再入どころかループ中に呼んだ関数で。。。
そんなもん問題外に決まってるだろw
- 887 名前:デフォルトの名無しさん (ワッチョイ 9302-Wsqh) mailto:sage [2016/05/18(水) 23:08:36.18 ID:5/m+TFHG0.net]
- >>863
下手なだけじゃん それを踏まえた上でどこからでも参照できるという利便性は余りある 使ってはいけない機能なんか無いんだよ
- 888 名前:デフォルトの名無しさん (ワッチョイ 937b-UkU1) [2016/05/18(水) 23:12:10.63 ID:yEeXtbl90.net]
- ガチで言ってるなら相当頭悪いな
- 889 名前:デフォルトの名無しさん (ワッチョイ 9fa6-Wsqh) mailto:sage [2016/05/18(水) 23:56:41.02 ID:bTqCK2tF0.net]
- >>865
利便性はたまにしかない。 たまにファイルレベルのグローバル変数(無名namespace内)がなかなか消せないことがあるってくらいだろう。
- 890 名前:デフォルトの名無しさん (ワッチョイ 1c42-MTTD) mailto:sage [2016/05/19(木) 00:15:20.75 ID:/u6FV+LN0.net]
- >>865
下手はお前のことだよ…
- 891 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 00:34:18.53 ID:CdsyDRqW0.net]
- お前らレベル低すぎだろ
所詮2chは人の受け売りしか言えない奴ばかりだな
- 892 名前:デフォルトの名無しさん (ワッチョイ 1c42-MTTD) mailto:sage [2016/05/19(木) 00:48:21.19 ID:/u6FV+LN0.net]
- 賢者は歴史から学ぶんだよ。
愚者でも長年マ続けてればグローバル変数が危ういことくらい自分で気づくだろ
- 893 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 00:50:20.65 ID:CdsyDRqW0.net]
- 長年続けていれば上手い使い方くらい分かってくるはずだよな
- 894 名前:デフォルトの名無しさん (ワッチョイ e6cc-MTTD) mailto:sage [2016/05/19(木) 00:54:48.61 ID:jjXAPX3H0.net]
- バカシャチョウ肯定する奴が多くてオレサマちょっとビックルがぶ飲みしますたw
- 895 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/19(木) 00:58:49.66 ID:AERHjGsq0.net]
- 上手い使い方っていうより害が少ない使い方ってだけだろ。
一連の流れの中で複数個所から見えるデータとして使うだけのグローバル変数なら簡単に消せる。 一連の流れとかに限定できなくて、プログラムの開始から終了までいつでも好きな時に使えて状態も保持してくれる、 ってなると何を使えばいいんだ?
- 896 名前:デフォルトの名無しさん (ワッチョイ c69f-VMrL) mailto:sage [2016/05/19(木) 01:02:49.20 ID:MRopiFdD0.net]
- std::cout とか std::cerr とか滅茶便利だからみんな使え
- 897 名前:デフォルトの名無しさん (ワッチョイ 3b73-QLyI) mailto:sage [2016/05/19(木) 03:25:07.54 ID:8MpWaHz30.net]
- 単純な文字列比較のコード書いたんだけど
一
- 898 名前:の呼び出して=、>、<って判明する方が楽だよね
とりあえずキーの重複チェック、登録、キーの値でインデックス更新 C++の set みたいな挙動 [] - [ここ壊れてます]
- 899 名前:デフォルトの名無しさん (ワッチョイ bc42-MTTD) mailto:sage [2016/05/19(木) 06:46:13.07 ID:YvzDSQsZ0.net]
- >>873
シングルトン
- 900 名前:デフォルトの名無しさん (ワッチョイ 7be7-8iTP) mailto:sage [2016/05/19(木) 06:51:42.87 ID:7d5d2lg80.net]
- template<class T,int N>
T& global(){ static T V; return V; } ネーム空間をなるべく汚染しないグローバル変数の実装。 Nを変更するとそれ毎に関数が生成される。なのでペナルティはあるかもね。
- 901 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 07:07:31.92 ID:A0YFV+4B0.net]
- まさに「俺すごいもの発明しちゃった」的な迷惑コード
全ソース内で一意な番号をプログラマー責任で決めて変数を識別するという発想がunko しかもコンストラクターに引数が与えられない残念仕様
- 902 名前:デフォルトの名無しさん (ワッチョイ 7be7-8iTP) mailto:sage [2016/05/19(木) 07:47:17.80 ID:7d5d2lg80.net]
- enumってコンパイルタイム変数になったんじゃなかったっけ。
それに。別にINTじゃなくてもなんでも識別できれば代用できるよ。 まぁ、ベストとは思わんよさすがに。
- 903 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 08:56:20.09 ID:shk5tFZP0.net]
- ベターどころか最悪の部類だよ
グローバル変数よりたちが悪い
- 904 名前:デフォルトの名無しさん (ワッチョイ 138c-7Gsa) mailto:sage [2016/05/19(木) 09:05:34.39 ID:C8F3ftqe0.net]
- いい加減グローバル変数にアレルギーある老害は引退しろ
- 905 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 09:08:06.56 ID:STy3ELMD0.net]
- グローバル変数とそれに準ずる機能を使っていいのは、初期化時のみ変更し、その後読み取り専用にする場合ぐらいだろ
仕様やコストや納期などの制限もなしにあえてやるというのは、ただの依存関係を考えられない初心者ぐらい プログラマにとって怠惰は美徳だが、センスのないやつが履き違えるとこうなるといういい例だな
- 906 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 09:09:30.57 ID:shk5tFZP0.net]
- namespaceすら使えないカスが偉そうにすんな
- 907 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 09:12:16.18 ID:eVW3ynUMd.net]
- グローバル変数なんて使った事ないけど何に必要なの
- 908 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 09:18:07.29 ID:shk5tFZP0.net]
- >>884
モジュール間のインターフェースを決められない未熟なプログラマに必要
- 909 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 09:44:48.05 ID:ZQvJITQCd.net]
- >>884
プログラムの開始から終了まで何らかの状態を保持し、任意のタイミングでそれを参照する必要があるとき。 ちなみにシングルトンや関数内staticの使用では完全な問題解決とは見なされない。
- 910 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 09:48:07.93 ID:ZQvJITQCd.net]
- かえってシングルトンの方が嫌われている。
- 911 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 09:56:21.08 ID:shk5tFZP0.net]
- >>886
参照するだけで変更しないなら定数でいいし、 変更するにしても名前空間に置けばいい グローバルにする理由が一つもない
- 912 名前:デフォルトの名無しさん (JP 0H31-1UMr) mailto:sage [2016/05/19(木) 10:07:12.42 ID:73EK6oIWH.net]
- ファイルから読み込んでずっと変更しないシステム定数
それに名前空間なんて名前衝突しないだけで何の意味もない 名前空間下にあろうがなかろうがグローバルだよ
- 913 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 10:16:44.29 ID:shk5tFZP0.net]
- >>889
名前衝突しないのは大事だろそれを意味ないって名前空間全否定か。 お前は sturuct A{static int B;}; こういうのもグローバル変数って言ってるの? そうならお前のいうグローバル変数と俺の思ってるグローバル変数は異なる物だ
- 914 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 10:19:20.40 ID:eVW3ynUMd.net]
- いくら聞いてもグローバルじゃないとダメな理由が見えてこない
サンプル書いてみて
- 915 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 10:23:06.51 ID:TN2vwqPV0.net]
- グローバルや
- 916 名前:Vングルトンの必要性が分からないやつは単に経験が少ないだけ
必要のないところでまで無闇に使うのは論外だが [] - [ここ壊れてます]
- 917 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 10:46:00.80 ID:shk5tFZP0.net]
- >>889
>ファイルから読み込んでずっと変更しないシステム定数 グローバル変数にするより関数にしたほうがいい。誤って書き換えてしまう心配もなくなる >>892 グローバル変数とシングルトン両方否定してる奴居ないと思うけど誰に対して言ってる? 独り言?
- 918 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 10:51:14.99 ID:uMP5aDx/p.net]
- >>891
ある関数内で、bool型の3つのフラグに応じて3つの処理をするか決める時に使ってたなあ 例えばこんな感じ bool f1,f2,f3; main(){ //フラグを決める処理をここに記述 func(); return; } func(){ if(f1)〜 if(f2)〜 if(f3)〜 } こういう場合どうすればスマートなの? funcの引数にフラグ渡すのはブサイクな気がしたからグローバルにしたけど
- 919 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 10:55:48.76 ID:ZQvJITQCd.net]
- グローバル変数に対する批判
→ シングルトンの導入 → シングルトンの乱用が目立つ → シングルトンに対する批判(デサパタの中でも下の下) →根本的な改善策は?←イマココ
- 920 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 10:56:57.72 ID:STy3ELMD0.net]
- >>894
引数にして何がブサイクなのかさっぱりわからんぞ… 数が増えるのが嫌なら構造体にして渡すし、むしろ迷う意味がわからない というか、C++ならそういう場合は関数じゃなくてクラスにしろよ
- 921 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 10:57:15.07 ID:eVW3ynUMd.net]
- f1,f2,f3とfuncをひとつのクラスにしてmainのローカルにすればいいのでは
- 922 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 10:58:07.34 ID:TN2vwqPV0.net]
- >>893
>グローバル変数とシングルトン両方否定してる奴居ないと思うけど誰に対して言ってる? 俺のレスの1つ前に「グローバルじゃないとダメな理由が見えてこない」って書いてあるんだが? シングルトンなんて機能的にはグローバルに薄皮一枚かぶせただけのものだし
- 923 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 10:58:41.46 ID:STy3ELMD0.net]
- シングルトンもはっきり言ってただの手抜きだから
静的クラス全てがそう
- 924 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 10:58:53.44 ID:ZQvJITQCd.net]
- >>894
mainとfuncだけに閉じた処理だから引数で渡すのに何の困難もないじゃないか。
- 925 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 10:59:11.66 ID:eVW3ynUMd.net]
- >>898
勝手な解釈すんな
- 926 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 10:59:37.70 ID:ZQvJITQCd.net]
- >>899
Yes
- 927 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:02:36.04 ID:TN2vwqPV0.net]
- >>901
じゃあどういう解釈すればよかったんだよ? お前はグローバルとシングルトンが本質的に違うとでも思ってるのか? シングルトンのほうが柔軟性があることは認めるがね
- 928 名前:デフォルトの名無しさん (ワッチョイ 653c-rvT4) [2016/05/19(木) 11:03:15.86 ID:n4iAdyIo0.net]
- 日本マイクロソフト人事部の西川昌邦(さいかわまさくに)は人殺しだ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」 などと自殺教唆を公然と行った!! 丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に 「いついつまでに金一億円をお振り込みください。間違った判断をなされないことを期待しています」 と発言するのと同じレベルだ!! 「しかもそれを注意してやったら世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」 などとイカ様気取りも大概にしろという発言を行った!! 抗議先 日本マイクロソフト人事本部 西川昌邦 masaikaw@microsoft.com 090-2541-1718
- 929 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 11:08:16.28 ID:STy3ELMD0.net]
- >>903
初心者かよ… シングルトンパターンとグローバル変数じゃスコープの要件の時点で既に違うだろ
- 930 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:11:13.83 ID:eVW3ynUMd.net]
- >>903
どれがマシかという話をしてるんだろ 静的変数が是か否かなんて今更くだらない 勝手な解釈すんなアホが
- 931 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:12:18.94 ID:TN2vwqPV0.net]
- >>905
「スコープの要件」とは? 何のことなのかよく分かりませんので詳しくご教示ください
- 932 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 11:13:39.15 ID:uMP5aDx/p.net]
- やっぱそうだよね…長年CやってたせいでいつまでたってもCライクな書き方が抜けない、重症です
- 933 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 11:14:15.63 ID:STy3ELMD0.net]
- >>907
シングルトンに静的インスタンスとしての概念はあっても公開の概念はない デザパタやり直せ
- 934 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:15:29.40 ID:TN2vwqPV0.net]
- >>906
>どれがマシかという話をしてるんだろ >静的変数が是か否かなんて さあ?それこそあんたの勝手な解釈だな 是か否かなんて話は俺はしてないよ文盲
- 935 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:18:04.90 ID:eVW3ynUMd.net]
- 勝手に人の話を勘違いして例にあげて
アホな解釈で話を歪めてトンチンカンな事言っておいてこの言い草 マジヤバイ
- 936 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:18:30.55 ID:TN2vwqPV0.net]
- >>909
>公開の概念はない ほう。そこをもう少し詳しく
- 937 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:20:22.01 ID:STy3ELMD0.net]
- >>912
いやこれ以上は答えないよ 既に質問ではなく相手を打ち負かすつもりのレスだからね お前はもう最初のレスから詰んでるよ 残念だったな
- 938 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:20:51.55 ID:TN2vwqPV0.net]
- >>911
そうだとしたら何を言いたいのか分からないようなテキストを書いたお前の責だバーカ
- 939 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:22:16.79 ID:STy3ELMD0.net]
- いつの間にこんなにレベルが下がったんだここは
ちょっと前までC++の仕様を少しでも間違えば後ろから刺される勢いだったのに…
- 940 名前:デフォルトの名無しさん (スプー Sd78-MTTD) [2016/05/19(木) 11:24:10.88 ID:eVW3ynUMd.net]
- >>914
勝手に人の話を勘違いで解釈して赤っ恥をこいた男の末路がこのレスに込められていますね
- 941 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 11:24:40.59 ID:TN2vwqPV0.net]
- >>913
「答えない」 ワロタwww「答えられない」だろwww 「お前は詰んでる」って勝利宣言して逃げるパターン出たね
- 942 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 11:28:17.40 ID:shk5tFZP0.net]
- >>917
お前が一人で勉強すればすむ話
- 943 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 11:32:43.43 ID:STy3ELMD0.net]
- >>917
普通の人間なら一つ前のレスで十分理解できるだろうに 長々と必死に抗弁を試みようとする時点で、 外面を保つ事のみを目的としてる残念な人間なのだとしか評価できないね まあその外面もお前の頭の中にしかないんだが
- 944 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 11:53:46.12 ID:ZQvJITQCd.net]
- グローバル変数とシングルトンの違いを論点にしてる人々がいるようだが...
どっちも使いたくないから他の機構を考える、という流れで是非よろしく
- 945 名前:デフォルトの名無しさん (JP 0H31-1UMr) mailto:sage [2016/05/19(木) 12:08:41.77 ID:73EK6oIWH.net]
- シングルトンが重宝されるのは初期化処理が複雑で
処理順解決が問題になる場合 そんなケースなら流石にグローバル丸出しなんてしない
- 946 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 12:43:08.90 ID:CdsyDRqW0.net]
- 使わなくてもいけるという発言を見る度に使えばいいじゃんとしか思えないわ
gotoもガンガンつかっていく
- 947 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 12:43:08.91 ID:TN2vwqPV0.net]
- >>919
外面云々とかこんな匿名掲示板で何ってるんだよバーカ 鏡と睨み合って自分自身に向かって諭してろよ中身なしの超絶ゴミクズ君
- 948 名前:デフォルトの名無しさん (ワッチョイ e97b-MTTD) mailto:sage [2016/05/19(木) 12:58:35.08 ID:hRS9mr1R0.net]
- まーたPostMessage君が出てきたのか
暑くなると頭のネジが5本くらい抜け落ちる奴が増えるから本当に迷惑だ
- 949 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:02:34.95 ID:Ibvbou6Qr.net]
- >>886
なぜ解決にならないのかkwsk
- 950 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:26:11.48 ID:Ibvbou6Qr.net]
- 物事の概念・本質をとらえることのできない低能>>903には、グローバル変数とシングルトンの区別がつかなくても仕方ない
>>890 >>889は名前空間スコープの変数をグローバル変数と呼んでいるようだが 名前空間スコープとクラススコープの違いぐらいは理解した方がいい。 むあ「何にもついて」の「何の意味もない」なのか文脈を無視して単語レベルで反応する猿には難しいかったかも
- 951 名前:デフォルトの名無しさん (オッペケ Srbd-MTTD) mailto:sage [2016/05/19(木) 13:27:31.80 ID:Ibvbou6Qr.net]
- >>926に訂正
誤 何にもついて 正 何について
- 952 名前:デフォルトの名無しさん (ワッチョイ 7162-xKv1) mailto:sage [2016/05/19(木) 13:40:03.86 ID:+RT//Rk20.net]
- 昔MFCのアプリで CPen, CBrush, COLORREF あたりを singleton に入れて使ってた。
singleton じゃなくてもいいけど、singleton が適してると思う。
- 953 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 13:41:01.02 ID:TN2vwqPV0.net]
- はいはいいつもの語り口きました
実務じゃ全く役に立たない無能さんw本は売れた?www
- 954 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 13:53:09.52 ID:ZQvJITQCd.net]
- >>925
結局は特定の変数に状態を保持しておくという本質は変わらないから。 もちろんスコープやアクセス範囲の制御ができるとか監視ができるとかのメリットはわかるけど、それは付随的なもの。
- 955 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 14:07:52.18 ID:STy3ELMD0.net]
- >>923
それで内容の理解はできたのか? 何年プログラムやってその体たらくなのかしらんが、少しは精進したほうがいいぞ
- 956 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/19(木) 14:12:05.72 ID:BWP2yuCgM.net]
- >>926
なぜ名前空間とクラススコープの違いを理解していないと思ったのか
- 957 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/19(木) 14:21:47.31 ID:STy3ELMD0.net]
- ステートレスにしろってのは同意するけど、
グローバル変数とステートレス/ステートフルの議論は別だと思うよ スコープ関係ないし
- 958 名前:デフォルトの名無しさん (アウアウ Sab5-V4Zo) mailto:sage [2016/05/19(木) 16:44:31.58 ID:iQAxMb//a.net]
- static constexpr double global_pi = 3.14;
- 959 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 16:55:51.62 ID:uMP5aDx/p.net]
- #deine PI 3.14でよくね
- 960 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/19(木) 17:48:13.21 ID:ZQvJITQCd.net]
- 状態の変化があって寿命の長いデータを、変数に入れることなく管理したい
- 961 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/19(木) 18:27:00.27 ID:ap9POzY/0.net]
- そこでクロージャですよ
- 962 名前:デフォルトの名無しさん (ワッチョイ 415b-xKv1) mailto:sage [2016/05/19(木) 19:42:52.90 ID:GUQu4Juu0.net]
- 644とかパーミッション設定できたらよかったのに。
- 963 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/19(木) 20:11:59.41 ID:TN2vwqPV0.net]
- >>934
普通にM_PI使えばいいと思うの それに3.14じゃ精度悪すぎるよ
- 964 名前:デフォルトの名無しさん (フォンフォン FF7c-rvT4) [2016/05/19(木) 20:43:53.03 ID:e5/wWDviF.net]
- 日本マイクロソフト人事部の西川昌邦(さいかわまさくに)は人殺しだ!!
「あなたのような従業員は会社のパフォーマンスにとってマイナスなので早く死んでください」 などと自殺教唆を公然と行った!! 丁寧に言えば何を言ってもいいというものではない!!これはヤクザや借金取りが脅迫をする時に 「いついつまでに金一億円をお振り込みください。間違った判断をなされないことを期待しています」 と発言するのと同じレベルだ!! 「しかもそれを注意してやったら世間はわれわれの味方だ。文句があるなら訴えてきたらよろしい。メールを電番を公開したければ どうぞご自由に。世論はわれわれを賛辞するするメールを送付するだろう」 などとイカ様気取りも大概にしろという発言を行った!! 抗議先 日本マイクロソフト人事本部 西川昌邦 masaikaw@microsoft.com 090-2541-1718
- 965 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 21:46:59.31 ID:STy3ELMD0.net]
- >>936
それ実装できたとして変数使わない意味ある?
- 966 名前:デフォルトの名無しさん (ワッチョイ bd54-MTTD) mailto:sage [2016/05/19(木) 21:49:04.86 ID:STy3ELMD0.net]
- セッターゲッター的なのか?
それとも一意型みたいなのか?
- 967 名前:デフォルトの名無しさん (ワッチョイ 3ec0-xpBm) mailto:sage [2016/05/19(木) 22:05:29.27 ID:WYY/9sV80.net]
- errno
- 968 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/19(木) 22:22:12.59 ID:BWP2yuCgM.net]
- とんちか何かかな?
- 969 名前:デフォルトの名無しさん (ブーイモ MM31-MTTD) mailto:sage [2016/05/19(木) 22:39:24.47 ID:TLDkaexbM.net]
- >>943
それ真似るにはスレッド変数使わないといけないし、c++erは手本とすべきじゃないだろ
- 970 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:07:06.91 ID:A0YFV+4B0.net]
- >>932
「変数を非グローバルの名前空間スコープに置けばいいというわけではない」という>>889の主張に対して突然クラススコープの話を持ち出したからだが
- 971 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:08:20.67 ID:A0YFV+4B0.net]
- >>939
へー、ところでその普通のM_PIって何?
- 972 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 23:10:33.47 ID:MvX4mrmep.net]
- へ?流石にネタかえ?
math.h使ったことあらず?
- 973 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:12:52.89 ID:A0YFV+4B0.net]
- >>934
そのstaticには何か意味があるのか
- 974 名前:デフォルトの名無しさん (ワッチョイ 9030-xKv1) mailto:sage [2016/05/19(木) 23:18:50.48 ID:W0ctNLpa0.net]
- >>948
その反応は、「printfを知らない」レベルじゃないと使えないと思うぞ
- 975 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/19(木) 23:19:22.62 ID:CdsyDRqW0.net]
- >>948
>>947は喧嘩腰でしか会話できない人だからほっといたほうがいいけど 要するにM_PIは標準化されていなくて環境によっては定義されているとは限らないからつつかれている
- 976 名前:デフォルトの名無しさん (ワッチョイ 917b-P/BW) [2016/05/19(木) 23:20:03.66 ID:shk5tFZP0.net]
- >>946
だからそれをグローバルというならpublicなクラススコープに置いた 静的変数もグローバルだろって話だよ。 外から見たらusing namespace出来るかどうかの違いしかないぞ
- 977 名前:デフォルトの名無しさん (ササクッテロ Spbd-7Gsa) mailto:sage [2016/05/19(木) 23:31:32.11 ID:MvX4mrmep.net]
- >>951
そうなんか よく分からんけど、俺が今まで触ったPCではどれも使えたし だいたいの環境なら使えるやろ そんなマイナー環境使ってる奴のことなんてシラネw
- 978 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/19(木) 23:50:33.37 ID:A0YFV+4B0.net]
- Visual C++やICCがマイナーとは恐れ入る
gccですら規格に違反しないよう -std=c11の時はM_PIが使えないようにしているというのに
- 979 名前:デフォルトの名無しさん (ワッチョイ a759-MTTD) mailto:sage [2016/05/20(金) 00:08:19.61 ID:B/K1dZEm0.net]
- 何かすごいカオスっぷりやなー。
- 980 名前:デフォルトの名無しさん (ワッチョイ 7b42-xKv1) mailto:sage [2016/05/20(金) 00:15:33.17 ID:DZyHkwIp0.net]
- 使えないなら自分で定義すれば良いだけなんでは?
- 981 名前:デフォルトの名無しさん (ワッチョイ e6cc-MTTD) mailto:sage [2016/05/20(金) 00:17:43.17 ID:Z0iObOq70.net]
- 計算機のPIボタンからおぼぼ
- 982 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/20(金) 01:04:20.91 ID:iM9BKZPP0.net]
- >>954
規格厨の心の闇は深いな Visual C++(_USE_MATH_DEFINESが必要だが)やg++では普通に使えるけどな ここはC++スレなんだぞ ICCはシラネ
- 983 名前:デフォルトの名無しさん (ワッチョイ f063-MTTD) mailto:sage [2016/05/20(金) 07:21:21.24 ID:e1TBDqG+0.net]
- >>958
ICCも_USE_MATH_DEFINESで使える筈。 Visual C++はC++規格1.4p2に反しないよう_USE_MATH_DEFINESが必要にしてあると記憶していたが 確かにgccの-std=c++14の時の挙動が気になるな。 C++の規格上許されるの?
- 984 名前:957 (オッペケ Srbd-MTTD) mailto:sage [2016/05/20(金) 08:08:40.81 ID:yY8TibFar.net]
- ちょっと考えたがVisual C++の実装が残念なだけで
C++では規格に反しない実装が可能なんだな。なるほど勉強になった。 だが処理系によって_USE_MATH_DEFINESが必要なものを「普通」と言って他人にすすめているという発想には及ばなかった失礼
- 985 名前:デフォルトの名無しさん (ワンミングク MMd0-MTTD) mailto:sage [2016/05/20(金) 08:14:16.19 ID:FD2q0K+3M.net]
- boost::math::costants::pi<double>();
- 986 名前:デフォルトの名無しさん (ワンミングク MMd0-P/BW) [2016/05/20(金) 13:01:42.59 ID:GBvYzkJRM.net]
- 人を下に見ないと心の平穏保てない可哀想な人がいるね
- 987 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/20(金) 13:09:57.94 ID:88qDJ/vwd.net]
- なんか書こうと思ったがやめた
- 988 名前:デフォルトの名無しさん (オイコラミネオ MM14-MTTD) [2016/05/20(金) 13:41:58.30 ID:EAAu5NmTM.net]
- >>961
なげーよ
- 989 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/20(金) 13:45:22.04 ID:jCV1qcCq0.net]
- >>964
#define PI boost::math::costants::pi<double>()
- 990 名前:デフォルトの名無しさん (アウアウ Sab5-MTTD) mailto:sage [2016/05/20(金) 15:24:20.36 ID:adOvMsP+a.net]
- どうでもいいけどなんで#define使うの?
- 991 名前:デフォルトの名無しさん (ワッチョイ 7bf8-xFql) mailto:sage [2016/05/20(金) 15:34:32.24 ID:jCV1qcCq0.net]
- const auto PI =
と書くより5バイトくらい短いから
- 992 名前:デフォルトの名無しさん (ワッチョイ bcbf-7Gsa) mailto:sage [2016/05/20(金) 17:24:15.12 ID:91VA6wxC0.net]
- tan(-1)
- 993 名前:デフォルトの名無しさん (ワッチョイ 415b-xKv1) mailto:sage [2016/05/20(金) 19:26:27.89 ID:yqNTwCqH0.net]
- acos(0)*2
- 994 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 19:36:46.02 ID:gU7EupTq0.net]
- 質問です。
内部クラスから外側クラスのインスタンスメンバを参照したいのですが、 ググッた感じでは参照を渡すしかないっぽいのですが、これってマジですか? マジなら、面倒なので内部クラスのstaticに入れてしまおうかとも思っているのですが、これってありですか? (外部クラスが生成される度に内部クラスが別々に生成されて大丈夫なのか、 それとも内部クラスとして書いても外にフラットに書いても同じで、クラスで唯一のstatic変数となってバグりますか?) 或いはこの場合に一般的に使われるような手法はありますか? 参考コード:動かしていないので雰囲気だけ確認してください。 class OuterClass { class InnerClass { static OuterClass* parent; // <- これあり?それとも OuterClassを複数作成しても唯一になって駄目? void method_cpp0(int score){ parent->score += score; // <- こう使うつもり } void method_cpp1(int score, OuterClass* p) { // <- こうじゃないと駄目? p->score += score; } void method_javascript(int s){ score += s; // JavaScriptはこれができる。これができればうれしい。 } void method_java(int score){ OuterClass.this.score += score; // Java はこれができるらしい。これでもいい。 } }; int score; };
- 995 名前:デフォルトの名無しさん (ワッチョイ 1c7b-dmih) mailto:sage [2016/05/20(金) 19:51:35.59 ID:iM9BKZPP0.net]
- >>969
あ゛ー いいから普通にM_PI使え 規格原理主義者のたわごとなど完全無視しろ もしクソバカ環境でコンパイルエラーが起きたら #ifndef M_PI #define M_PI 3.14159265358979323846 #endif とかで如何なる問題も発生しない
- 996 名前:デフォルトの名無しさん (ワッチョイ bd6c-WkY+) mailto:sage [2016/05/20(金) 19:54:05.85 ID:BayA8c/P0.net]
- >>970
ようわからんけど 別にstaticにせんでも const OuterClass&をinnerClassにもたせてコンストラクタで指定すれば良い気がする
- 997 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 20:29:11.61 ID:gU7EupTq0.net]
- >>972
コンストラクタでやるという記述もググッた時に見つかったのですが、 今回はInnerClassを一つではなく配列として持つので、メモリをケチろうかと。 コンストラクタで渡した方が確かに記述は綺麗なのですが。 とはいえ、改めて「プログラミング言語C++」を確認しても、 クラス継承の話は多くてもクラス内包の話がほぼ無いので、 一般的にはコンストラクタで「メンバ変数」として渡すのでしょうか。確かにこれだと確実です。 記述的にはコンストラクタ内でstaticに対して上書きしまくってもいいのですが、 これができるのか?というのは若干不安ですし。
- 998 名前:デフォルトの名無しさん (ワッチョイ bd6c-WkY+) mailto:sage [2016/05/20(金) 20:43:41.93 ID:BayA8c/P0.net]
- OuterClassのインスタンスが一つならそれでもいいけど
それならそれで他に良い設計がありそうな気もする それこそシングルトンだとか
- 999 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 20:56:18.27 ID:gU7EupTq0.net]
- つまりstaticはどこに書いてあるクラスでも1つかもしれないと。
OuterClassは当面は1つで済みますが、今後複数化する可能性もあるので、シングルトンは駄目です。 余り真面目にC++やってなかったのですが、 内部クラスから外部クラスが階層アクセスできないのは、C++の仕様がちょっと古い気がします。 後発のJavaやJavaScriptは最初から出来るので。 ちなみに参考コード class OuterClass { class InnerClass { // 省略 }; int score; vector<InnerClass> nodes; };
- 1000 名前:デフォルトの名無しさん (スプー Sd28-MTTD) mailto:sage [2016/05/20(金) 21:02:34.05 ID:88qDJ/vwd.net]
- >>973
Inner - Outer の関係にする必要性はどこにあるの?
- 1001 名前:デフォルトの名無しさん (ブーイモ MM31-MTTD) mailto:sage [2016/05/20(金) 21:12:02.35 ID:icw8VvxgM.net]
- >>970
・staticメンバは
- 1002 名前:プログラムを通して一つ
・メモリをケチりたくてmethod_cpp1が可能ならそれがよいだろう ・JavaやJavaScriptでも結局は暗黙的にOuterClassへの参照を持つことになるのでInnerClassインスタンスごとにメモリを使うことになる ・InnerClassとOuterClassとの間にメモリ配置上の制約があるなら、ほかの手も考えられるが、配列で持つとのことなので恐らくダメだろう ・古いというのはわからなくもないが、後発の言語が暗黙的にやるコストについて意識しない人がいるのならあながち悪くはないのかもしれない [] - [ここ壊れてます]
- 1003 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 21:20:44.60 ID:Czf9pjzL0.net]
- >>971
いんや規格は重要だ まず動くことが至上命題ではあるがそこ履き違えると底辺コーダーになっちまうぞ
- 1004 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) [2016/05/20(金) 21:34:03.42 ID:Czf9pjzL0.net]
- なんだP君だったのか…
>>970 メモリケチりたい状況で外の「インスタンス」にアクセスしたいってのは無理がある気がするな 俺ならOuterとInnerとは別に、もう一個クラス作ってそいつに両方に依存した処理やらせるかな
- 1005 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 21:38:07.10 ID:Czf9pjzL0.net]
- >>977を良く見てなかったが、どうやら余計なレスだったようだ
自分もmethod_cpp1の適宜渡す方法に同意します
- 1006 名前:デフォルトの名無しさん (ブーイモ MMe9-MTTD) mailto:sage [2016/05/20(金) 21:56:53.90 ID:Dz9bHtQOM.net]
- 適宜渡すとして記述が煩雑になるのが問題のようだから、それを緩和する手は色々ありそうな気はする
- 1007 名前:デフォルトの名無しさん (ブーイモ MMe9-MTTD) mailto:sage [2016/05/20(金) 21:57:43.59 ID:Dz9bHtQOM.net]
- あれID変わった
- 1008 名前:デフォルトの名無しさん (ワッチョイ fd10-MJjN) mailto:sage [2016/05/20(金) 22:09:45.76 ID:RCBW+7XV0.net]
- >>934
M_PIが規格で定義されてるかとかいう議論も意味あるかもしれないけど、 そもそも、円周率はたとえが悪いだけなんじゃないの? 重力加速度とか万有引力定数とかならどうするのがベスト?(もちろん場合によるだろうが)
- 1009 名前:デフォルトの名無しさん (ワッチョイ bd54-UmRV) mailto:sage [2016/05/20(金) 22:23:37.08 ID:Czf9pjzL0.net]
- >>981
ありそうな気はするが技巧的な方法しか思いつかないな InnerInnerを作り、今のInnerの機能を移動し、Innerにはコンテナと親の参照を持たせる そしてInnerInnerのmethod_cpp1のようなメソッドをInnerが委譲 これじゃ親から見た場合に多少はマシになるって程度で、コードも設計も汚いな
- 1010 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 22:43:44.89 ID:gU7EupTq0.net]
- >>976
いや特にありません。そもそも非オブジェクト指向でも当然組めます。 ただ、色々試した結果、オブジェクト指向に慣れてくると、 Java的な「それ刻みすぎじゃねーの?」と思えるような所まで刻んだ方が 結果的に見やすかったり、後々融通が利くことが何となく分かってきました。 なので、今後はそうしようかと試しています。 >>977 詳細にありがとうございます。やはりstaticでは駄目ですか。 method_cpp1は今回は可能ですが、記述の抽象度が混ざるので出来ればクラス分けしたかったのです。 JavaやJavaScriptでもメモリ使用量が少ないわけではないのはその通りですが、 内部クラスからは外部クラスを参照するのはかなり普通のことなので、 これは言語として対応して欲しかったところです。今まで拡張されなかったのが不思議なくらいです。 これはコンパイラ側だけで完全に対応でき、実行時の追加コストはありません。 (不要ならコンパイル時点で外側クラスポインタの確保を止めることが出来る) 申し訳ありませんが、メモリ配置上の制約というのは何のことか分かりません。
- 1011 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 22:44:35.94 ID:gU7EupTq0.net]
- ちなみに、やろうとしていることに近く、イメージ的に分かりやすいのは、「ライフゲームをオブジェクト指向で」です。
参考コード、非オブジェクト指向 bool map[64][64]; bool map_next[64][64]; for (int i=0
- 1012 名前:;i<64;i++)
for (int j=0;j<64;j++) map_next[i][j] = life_exe(i,j); 参考コード、オブジェクト指向 class LifeGame { class Dot { int x, int y; void life_exe(){} // ここで外側の map, map_new に直接アクセスして更新させたい。 }; bool map[64][64]; bool map_next[64][64]; }; 実際にやろうとしていることは、正規表現の探索に近いです。 ライフゲームのように外側変数が時系列で変化するものではないため、 探索途中経過(Dot)をオブジェクトとして持ち、 最初から各オブジェクトに終わりまで探索(life_exe)させる事が出来ます。 とはいえ、やはりメリットは大してありませんが。 [] - [ここ壊れてます]
- 1013 名前:デフォルトの名無しさん (ワッチョイ bcbf-7Gsa) mailto:sage [2016/05/20(金) 22:45:59.15 ID:91VA6wxC0.net]
- >>983
ライブラリの数値を使うか自分で数値を定義しておくかな… piとかeは数学関数で計算できるだけマシってことね M_PI使わない理由として俺は十分納得できるかな
- 1014 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/20(金) 22:51:15.37 ID:RvnBIaae0.net]
- >>985
オブジェクト指向であることとか「刻む」ことの意義と インナークラスにすることがあまり結びつかないなあ。 内側のクラスの存在が外側から完全に隠れる以外の効果あったっけ?
- 1015 名前:デフォルトの名無しさん (ワッチョイ bd6c-dqc0) mailto:sage [2016/05/20(金) 22:53:44.87 ID:BayA8c/P0.net]
- 内側クラスは外側クラスのプライベートにアクセスできる
- 1016 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/20(金) 22:56:32.97 ID:4DucW+JdM.net]
- >>984
マクロやstaticメンバを使った汚い手から一時的な処理用のクラスを作るなどまで想像してましたが、どのみち一手間かかるので必要性次第でしょうね(Innerのメソッドが多くてそうでもしないと…とか) 結局それほどケチる必要がなくてコンストラクタで渡すので十分な予感 本当にポインタ1個分が問題になるような細かいInnerClassを多数作るようなケースなら、このアドレスの範囲にあるInnerのオブジェクトはどのOuterに対応する、という表が作れると検索時間と引き替えにメモリを節約できたり
- 1017 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/20(金) 23:07:25.77 ID:4DucW+JdM.net]
- >>985
最近追加されたラムダですらどのようにキャプチャするかを細かく指定しなければならない言語だということを理解した方がいいと思う 今後そういう機能が追加されるかどうかはしらないけど、されたらいいね
- 1018 名前:デフォルトの名無しさん (ワッチョイ bc42-MTTD) mailto:sage [2016/05/20(金) 23:17:26.67 ID:soKi6pqK0.net]
- innerクラスなんて完全なアンチパターンだろ
馬鹿じゃねーの
- 1019 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 23:24:48.47 ID:gU7EupTq0.net]
- >>988
インナーにするのは、DotはLifeGameでしか使わないからです。(他から見える必要がない) オブジェクト指向にするのは、多分制御が簡単になりそうだからなのと、 その際に記述が抽象階層で分離でき、見やすくなると予想されるからです。 もっと良い例がありました。「文書内の不完全マッチによる最有力候補探索」です。 これはほぼやりたいことと同じです。 例えばテキスト文書があったとして、「あいうえおかきくけこ」を探索するとします。 ここで、そのまま「あいうえおかきくけこ」があれば100点、それを示して終わりです。 これがない場合、欠け方それぞれで得点付けし、とにかく一番得点が高い候補を一つ出します。 (例えば「あ」がないのなら-20点とか、「う」が抜けているのなら-10点とか) 実際は多分100〜200字同士のマッチングと等価で、完全一致は期待できないため、 Dotに分枝の作成まで含めてlife_exeさせます。 結果、LifeGameからは「やっとけ。」だけで済み、詳細な実行ルーチンはDot側に集約されます。 といってもこれは分離されるだけで、どちらに書くかの違いだけなのですが、 それでも後々効いてきます
- 1020 名前:フで、Dot側に集約できる部分は集約しておきたいのです。
Dotは分枝の作成時に自分自身からforkする感じで、たぶんかなり増えます。 ただし親は一つなので、ここの部分は勿体ないかな、という感じでした。 (問題になるほど増えないとは思います) life_exe内には親のmapへのアクセスは大量に存在しますが、 life_exeはDot内で自走するので、引数として親ポインタを渡すことは出来ません。 従って、親ポインタはコンストラクタでメンバ変数として確保することになります。 コンストラクタで親ポインタを渡すのは、記述的には全く問題ないです。 (最初にもらった親ポインタを大事に抱えて再帰しまくることも出来ますが、、、) [] - [ここ壊れてます]
- 1021 名前:デフォルトの名無しさん (ワッチョイ b0ab-/fHo) [2016/05/20(金) 23:24:55.51 ID:G62tMzQY0.net]
- 馬鹿じゃねーよ
おまえ以外は
- 1022 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/20(金) 23:52:28.35 ID:gU7EupTq0.net]
- >>991
> 最近追加されたラムダですら 見てみましたが、確かにこのラムダはちょっと見にくいですし、使いにくいですね。 元はといえばC++には関数内関数が無い為、レキシカルスコープ(※)を導入できず、 ラムダのうまみも少し欠けている気がします。 (※一つずつ上の階層を探して名前が一致したらそれと見なす) g++では既に拡張が行われていると聞きましたが、先に関数内関数が欲しかったですね。 とはいえ、回答して頂いた皆様、ありがとうございました。
- 1023 名前:デフォルトの名無しさん (ブーイモ MM28-MTTD) mailto:sage [2016/05/21(土) 00:00:28.24 ID:z244ST7/M.net]
- >>995
使いにくいのにはそれなりの理由があって、それを理解しましょうねという話 その上で適切な言語を選びましょう
- 1024 名前:デフォルトの名無しさん (ワッチョイ 9102-xKv1) mailto:sage [2016/05/21(土) 00:01:00.93 ID:EJBeUkkD0.net]
- 動けば良いんだよ
- 1025 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/21(土) 00:27:26.30 ID:jGVAnHGn0.net]
- >>995
よくわかんないけど、名前が一致した「それ」は型が揃っているのかな? 一致してる度合いに微妙に差があるのでは?
- 1026 名前:デフォルトの名無しさん (ワッチョイ bc7b-xKv1) mailto:sage [2016/05/21(土) 00:56:40.25 ID:Uqmc4lbY0.net]
- >>983
宇宙物理のシミュレーションだと万有引力定数が1になるような単位系で計算する
- 1027 名前:デフォルトの名無しさん (ワッチョイ caa6-xKv1) mailto:sage [2016/05/21(土) 01:08:07.17 ID:jGVAnHGn0.net]
- 外部からはOuter::Innerはautoでしか受けられない型か
- 1028 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/21(土) 01:23:16.26 ID:HBQ7d37R0.net]
- 次スレ
C++相談室 part125 echo.2ch.net/test/read.cgi/tech/1463761261/
- 1029 名前:デフォルトの名無しさん (ワッチョイ 7b5b-xKv1) mailto:sage [2016/05/21(土) 01:29:43.83 ID:HBQ7d37R0.net]
- >>998
自分がイメージしたのはJavaScriptで、あの言語はnamespaceがないので関数内関数がデフォ、 そして型がないので名前さえ一致すればそこで決まりですね。 ラムダで数階層上の変数を掴みに行くこともよくあります。 C++はnamespaceで細かく切れということなのでしょうが、 やはりユーザの意志で階層が切れないのは使いにくいですね。 C++のインナークラスはメリットがないといえばそうですが、JavaScriptだとインナークラスがデフォです。 (外に見せる必要がなければインナークラス) これに関しては「余分な物は見せない」というJavaScriptの方がプログラミングとしては正しいと思われます。 ただ、ラムダはGCヒープならほぼ問題ありませんが、スタックが基本のC/C++だと実装も難しいはずで、 C++のラムダは分かりやすくはないけど妥当な仕様の気もしますね。 現実的にはヒープポインタを値キャプチャでラムダでしょうし、この仕様で実害はありません。 スタック変数をラムダで参照キャプチャは使い方として不自然ですし。 それでもやりたければ出来るところがC++っぽいですが。
- 1030 名前:1001 [Over 1000 Thread.net]
- このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。 life time: 48日 1時間 7分 19秒
- 1031 名前:1002 [Over 1000 Thread.net]
- 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。 ─────────────────── 《プレミアム会員の主な特典》 ★ 2ちゃんねる専用ブラウザからの広告除去 ★ 2ちゃんねるの過去ログを取得 ★ 書き込み規制の緩和 ─────────────────── 会員登録には個人情報は一切必要ありません。 月300円から匿名でご購入いただけます。 ▼ プレミアム会員登録はこちら ▼ premium.2ch.net/ pink-chan-store.myshopify.com/
- 1032 名前:過去ログ ★ [[過去ログ]]
- ■ このスレッドは過去ログ倉庫に格納されています
|

|