- 1 名前:デフォルトの名無しさん mailto:sage [2018/01/20(土) 09:05:42.21 ID:mJKRg6iz0.net]
- 次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part133 mevius.5ch.net/test/read.cgi/tech/1511509970/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.102【環境依存OK】 mevius.5ch.net/test/read.cgi/tech/1509780815/ ■長いソースを貼るときはここへ。■ 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
- 152 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 08:03:01.53 ID:TOIQut300.net]
- >>146
explorer.exeへのショートカットを作ってプロパティで作業ディレクトリを指定するか、 COMでIShellLink::SetWorkingDirectoryを使って同じことをするあたりか?
- 153 名前:134 mailto:sage [2018/02/16(金) 09:56:21.20 ID:+b2iJMK40.net]
- みなさんありがとうございます。
std::mapにLRUや最大要素数の仕組みを持たせた派生クラスでも 無いかと思ったのですが、標準ではやっぱり無いですか。 >>143のように、std::mapをメンバの一つに持たせた独自クラスを 一から作っていくことになるんですかね。
- 154 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 10:11:55.71 ID:JoalkiMd0.net]
- amazonランキングの謎を解く とか言う本でmove-to-frontを見た
本の紹介「Amazonランキングの謎を解く」 www.kenkyuu.net/whatsnew/2011/08/book2011-08-01.html >「move-to-front規則」(最後に売れた順に並べる、つまり、注文のたびに1位にジャンプする) Move To Front - Wikipedia https://ja.wikipedia.org/wiki/Move_To_Front
- 155 名前: []
- [ここ壊れてます]
- 156 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 10:54:10.09 ID:TOIQut300.net]
- ageだね
- 157 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 14:25:37.67 ID:UjPhOEUu0.net]
- >>149
「c++ lru map」でググったか? いくつかサンプルになりそうなコードが見つかるんだけど
- 158 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 18:05:58.99 ID:GGXfeEqkM.net]
- 江添さんのC++17本予約しようかな
- 159 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 18:26:06.12 ID:waI0am5S0.net]
- 予約しなくても売れ残るからいつでも買える
- 160 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 20:04:35.13 ID:1Lr9lxEpa.net]
- C++を勉強しようと思ってる者ですが書籍を探しております。Cはある程度書けるのでそれを前提とした書籍が欲しいです
- 161 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 20:33:50.33 ID:Rc+MuzY40.net]
- C++ クイック入門&リファレンス
プログラミング言語C++ 第4版
- 162 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 20:36:34.10 ID:9b60nRDg0.net]
- >>155
C++11 以前だが accelerated c++, ここでフォローするよ
- 163 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 20:37:11.23 ID:TOIQut300.net]
- 禿4は俺も推奨する
C++11の良本だ
- 164 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 21:09:12.34 ID:+EaaPhKWa.net]
- めっちゃ高いけどその価値あるのね
- 165 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 21:46:03.21 ID:5AmFsIq1M.net]
- こっちはフッサフサやでhttps://images-na.ssl-images-amazon.com/images/I/51fYzbYoXFL._UX250_.jpg
- 166 名前:デフォルトの名無しさん mailto:sage [2018/02/16(金) 22:03:34.89 ID:qDhjnryl0.net]
- 誰がハゲやねん
- 167 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 09:43:48.64 ID:Lqib7/b9F.net]
- 以下のようにconst char*型の文字列でchar*型の変数を初期化したいときに
strcpyやstrlenを書かずにstd::stringを利用して短くかけないかと思うのですが msvcだとエラーにならず、clang, gccだとdeleteでセグメンテーション違反になります。 どうすればより良い感じになるでしょうか?const_castはできれば使いたくないです。 #include <string.h> #include <string> #include <iostream> int main() { const char* asdf = "asdf"; // char* psz2 = new char[strlen(asdf)+1]; // strcpy(psz2, asdf); std::string *psz = new std::string(asdf); char* psz2 = &(*psz)[0]; std::cout << psz2 << std::endl; delete psz2; return 0; }
- 168 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 09:51:35.08 ID:mykV+fTk0.net]
- delete psz2なんてしちゃだめconst関係ない
- 169 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 10:21:38.22 ID:4SqFrjwY0.net]
- 何故stringそのものじゃなくて内部データをdeleteしようと思ったのか
newで確保した配列じゃないからdeleteはできない stringの内部データは静的な配列と動的な配列を組み合わせて表現されている mscvの場合先頭16文字はchar[16]でそれ以降は動的な配列に入るようになっている psz[0]のアドレスはchar[16]の先頭アドレスなので当然deleteできない msvcはdeleteに失敗しても落ちないのかな
- 170 名前:デフォルトの名無しさん [2018/02/17(土) 10:47:53.57 ID:IU1gsQgu0.net]
- >>155-159
本格的な本なら、ロベール、ハーバート・シルトの独習 軽めの本なら、柴田 望洋、林 晴比古、猫
- 171 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 11:22:13.08 ID:++v6vSjK0.net]
- ハンガリー人まだ絶滅してないのか。
stringはnull terminatedでないからpszはおかしい。 psz2もnull terminatedの保証がないからc_strを使うべき。 うまくいったらstrdupも調べとこうな。
- 172 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 11:25:45.81 ID:szUqPRvW0.net]
- >>162
char* psz2 = &(*psz)[0]; って char* psz2 = psz->c_str(); と同じなのかな? いずれにせよ delete psz; は出来る(するべき?)だけど、 delete psz2; は出来ないんじゃないかな。
- 173 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 11:30:29.43 ID:mykV+fTk0.net]
- 必要ないところでnew/delete使う人は根本からして
- 174 名前:何も分かってない []
- [ここ壊れてます]
- 175 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 15:18:23.73 ID:YAgvIyFy0.net]
- >>162
お前はstringがただの配列だと思っているのか? このトンチキ野郎!
- 176 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 16:50:38.35 ID:Q4Uv6cZz0.net]
- >>162
弁護士の唐沢です しっかり「char* const」と「const char*」の違いを認識しなさい const char*は参照先の定数を変更しない事を保証する宣言であり、char*は参照先の定数を変更できる為、const char*で保持するアドレスをchar*にコピーする事は言語仕様により禁止されています。それは分かるよね? 最初に宣言したポインタを間違えて別アドレスで上書きしないようにconstで固定したいのなら、char* constを使うようにしましょう。とりあえずとりいそぎ
- 177 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 17:22:58.60 ID:0j+aLKWi0.net]
- >>162
strdupという手があるが何がしたいのか今一つ分からない const char* asdf = "asdf"; char *p = strdup(asdf); std::cout << p << std::endl; delete p;
- 178 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 17:31:15.32 ID:CLg9GPlRM.net]
- >>170
それ誰に指摘してんの?とりいそぎ。
- 179 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 17:34:22.09 ID:4SqFrjwY0.net]
- >>167
データは連続しているので同じになる 16文字まではスタックを使い、それ以上の長さになるとヒープにコピーされる 実装ではメンバの配列には何かしらのエスケープ文字が入る ちなみにmsvcでは実装の都合上free(&str[0])で強引に解放できる
- 180 名前:173 mailto:sage [2018/02/17(土) 17:49:08.26 ID:4SqFrjwY0.net]
- 補足
スタックとヒープを使い分けるかどうかは実装依存 gcc、clang、msvcでは行われている したがって短い文字列でnewを避けるためにstringを使わないというのは意味が無い
- 181 名前:デフォルトの名無しさん [2018/02/17(土) 18:06:03.81 .net]
- >>171
strdupで確保した領域をfreeでなくdeleteするのは正しいの?
- 182 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 18:09:26.31 ID:Lp1rq1Kt0.net]
- 良いみたいだ
中でmallocで確保している
- 183 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 18:10:04.88 ID:Lp1rq1Kt0.net]
- 違う、freeで開放する
- 184 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 18:14:21.37 ID:Q4Uv6cZz0.net]
- >>175
弁護士の唐沢です mallocとdeleteは併用厳禁です。freeを使用してください
- 185 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 18:18:24.62 ID:DOQJ47ER0.net]
- 昔から気になってるんだが「解放」だよね...
- 186 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 18:25:00.27 ID:Lp1rq1Kt0.net]
- そうでした、ごめんね
- 187 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 18:25:45.10 ID:JVoP/9zU0.net]
- >>176
良くねえだろ ぼけ >>179 開放はpublic的なニュアンスだよな
- 188 名前:はちみつ餃子 mailto:sage [2018/02/17(土) 18:45:39.74 ID:uBckbaXI0.net]
- >>162
ぶっちゃけた話、 strcpy が一番短いと思う。
- 189 名前:デフォルトの名無しさん [2018/02/17(土) 18:59:50.35 .net]
- >>182
strdup という答えが出てるのに何言ってるの?
- 190 名前:はちみつ餃子 mailto:sage [2018/02/17(土) 19:05:58.96 ID:uBckbaXI0.net]
- >>183
strdup は C++ の仕様の範囲内ではないので……。 POSIX と MSVCRT に有るからほとんどの場合に十分といえば十分なのかもしんないけど。
- 191 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 19:07:20.59 ID:u7LZaTzx0.net]
- >>166
接頭辞を見ればデータ内容の属性がワカルというメリットは他に代え難い ttp://local.joelonsoftware.com/wiki/間違ったコードは間違って見えるようにする あといちいちthis->xと書くよりも、すすんでm_xと書きましょう
- 192 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 19:21:01.63 ID:u7LZaTzx0.net]
- strdup()だと明示的に開放コードをどっかに書かなくてはならなくて必ず忘れるので
せっかくC++なのでスマポ的にwrapすると良いと思う
- 193 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 19:37:41.81 ID:JVoP/9zU0.net]
- ホワイトボックスなCでは許せるが
ブラックボックスなC++の流儀には全く合わない それがstrdup
- 194 名前:167 mailto:sage [2018/02/17(土) 19:53:11.68 ID:szUqPRvW0.net]
- >>173-174 教
- 195 名前:えてくれてありがとう。
返されるアドレスは等しい値なのか、という単純な質問だったんだけど、 読み直してみたら分かりにくい質問文だと思っていた次第。 それにしても &(*psz)[0] って結構ややこしいのね。 オーバーロードされた[]演算子が返すcharへの参照、 に対してアドレス演算子&を作用させた結果、て感じかな。 [] - [ここ壊れてます]
- 196 名前:162 mailto:sage [2018/02/17(土) 20:37:30.76 ID:uaRb1j8RM.net]
- すみません、たくさんレスありがとうございます。
_strdupにしてみたら期待の動作ができました。 ありがとうございました。
- 197 名前:162 mailto:sage [2018/02/17(土) 21:27:34.68 ID:uaRb1j8RM.net]
- また質問してすみません。
msvc(vs2017)だとコンパイラをC++17にしても以下のプログラムで C2664 'void (T *&)': 引数 1 を 'hoge *' から 'hoge *&' へ変換できません。 となってしまうのですが、コードにバグが有るでしょうか?msvcのバグでしょうか? GCCやClangではコンパイルできます。 #include <memory> struct hoge {}; template <class T> inline void safe_delete(T*& p) { if (p) { delete p; p = nullptr; } } int main() { std::unique_ptr<hoge, decltype(&safe_delete<hoge>)> sp{new hoge(), safe_delete<hoge>}; return 0; }
- 198 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 22:11:53.16 ID:IU1gsQgu0.net]
- (T *&)
そもそも、ポインタ・参照を、同時に使えるのか?
- 199 名前:片山博文MZ mailto:sage [2018/02/17(土) 22:23:52.63 ID:EwTJGG8Pd.net]
- new hoge()は変数じゃないから、代入できない。
- 200 名前: mailto:sage [2018/02/17(土) 22:35:58.53 ID:I0BNlfaX0.net]
- >>165
独習C++ はいいですね、特に演習問題「std::stringを再実装する」を絶賛します これが書けるようになったらC++初級者をかたってもいいかもしれない、もしかすると解答は載ってなかったかもしれないけれども
- 201 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 22:35:58.70 ID:++v6vSjK0.net]
- >>185
どこから引用したのか知らんけど、そのページ読んでないだろ… システムハンガリアンはまるで役に立たないって書いてあるぞ。
- 202 名前: mailto:sage [2018/02/17(土) 22:43:42.94 ID:I0BNlfaX0.net]
- >>194
(システム)ハンガリアンってそんなに悪いものなんですかねえ いや、win32api がバンバンハンガリアンしているので、そんなもんか、と思っていましたが
- 203 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 22:51:12.84 ID:++v6vSjK0.net]
- >>195
OOPともTMPとも型推論とも相性が悪いからね。 MS自身ももう使うなって言ってる。
- 204 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 22:52:19.16 ID:YAgvIyFy0.net]
- 頭悪いヤツが多様するハンガリアン
- 205 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 22:54:25.25 ID:YAgvIyFy0.net]
- 嫌いだからハンガリアン意地でも使わなかった
dwやらszやらせっかくのフリーフォーマッとが台なしだよ
- 206 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 22:59:56.16 ID:Q4Uv6cZz0.net]
- フリーフォーマットはクソコードの温床ナリよ
- 207 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 23:03:12.11 ID:4SqFrjwY0.net]
- 型を変えるたびに変数名も変えるのか
ごくろうやな
- 208 名前: mailto:sage [2018/02/17(土) 23:08:35.57 ID:I0BNlfaX0.net]
- >>191
それは「ポインタ変数の参照」で、たしか便利に使えた気がしますが… 明日にでもちょっと書いてみます、今日は疲れました…
- 209 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 23:22:18.45 ID:2kmwzB0g0.net]
- >>195
システムハンガリアンは弊害ばかりだろうけど、アプリケーションハンガリアンは適切に使えば有益だよ。
- 210 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 23:25:09.87 ID:4SqFrjwY0.net]
- mとかいらなくねってなって削ったら_から始まるようになった
- 211 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 23:38:55.74 ID:u7LZaTzx0.net]
- データの属性としてサイズとか型そのものを明示したいときはシステムハンガリアンするしかないし、
よってWIN32APIがシステムハンガリアンを使って定義されるのは全く正しい 問題なのはアプリケーションハンガリアンすべきときと システムハンガリアンすべきときが区別できない香具師が適当に使うと 被害甚大だということやがな…
- 212 名前:デフォルトの名無しさん [2018/02/17(土) 23:41:05.97 ID:YmD9lIL
]
- [ここ壊れてます]
- 213 名前:j0.net mailto: 今時システムハンガリアンは無いだろ
20年前で時間が止まってるのかよ [] - [ここ壊れてます]
- 214 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 23:42:44.53 ID:u7LZaTzx0.net]
- >>205
なぜシステムハンガリアンが有り得ないのかkwsk DWORDを渡すABIがある日突然気まぐれにUSHORTに変わったりしたら困りはしまいか
- 215 名前:デフォルトの名無しさん [2018/02/17(土) 23:49:32.45 ID:YmD9lILj0.net]
- ググればいいだろ
積極的批判 システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。変更を怠ると、たちまち不整合となり、保守の障害となるだけで一利もない。 C++やC#のような言語では型付けが存在するためにシステムハンガリアンを使用することによる利点はない[3]。 移植性を阻害する。 総称型、メタプログラミングとの相性が悪い。 消極的批判 いわゆる良書と呼ばれるようなC++本で、現在[いつ?]システムハンガリアンを採用している例が皆無。 かつてWindows API/MFCにおいてハンガリアンを全面的に採用していたMicrosoft自身が、.NET Frameworkではハンガリアンを禁止[1]している。
- 216 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 23:52:28.19 ID:YEFSbrC50.net]
- 申し訳ないがコピペディアからのウィキペはNG
- 217 名前:デフォルトの名無しさん mailto:sage [2018/02/17(土) 23:54:40.85 ID:4SqFrjwY0.net]
- 型なんてマウスオーバーなりすれば表示されるだろ
変数名に書いておかなきゃわからないとかメモ帳で書いてるのかよ
- 218 名前:はちみつ餃子 mailto:sage [2018/02/18(日) 00:10:56.39 ID:OOIPfNvY0.net]
- >>190
デリータはポインタが指す先のリソースを後始末するのが仕事であって、 ポインタが無効になるという処理は unique_ptr の側でやってくれるので、 ヌルを代入する必要はない。 むしろ unique_ptr 内で管理しているものをデリータが勝手に弄るのは好ましくないので、 参照で受けるのはやめてさしあげろ。 私なりに仕様を読んでこの場合をエラーにする根拠は発見できなかったが、 エラーになってくれる方がありがたい場面だと思う。
- 219 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 00:16:38.53 ID:Ct2k6iqr0.net]
- デリータに渡されるのは左辺値と限らないからだろう。
- 220 名前:はちみつ餃子 mailto:sage [2018/02/18(日) 00:25:54.07 ID:OOIPfNvY0.net]
- N3337 だと 516 ページの説明がデリータの要件だと思うんだけど、
デリータ d の型が D で ptr の型が unique_ptr<T, D>::pointer のとき式 d(ptr) が valid であることと書いてあって、 ptr が rvalue か lvalue かってのは特に指定がない。 (どこかに書いてあったりする?) この説明で言ってる ptr が変数名なのだとしたら暗に lvalue とほのめかしてるようにも思えなくもないし、よくわからん。 わからんことは避けて通りたい。
- 221 名前:はちみつ餃子 mailto:sage [2018/02/18(日) 00:30:57.46 ID:OOIPfNvY0.net]
- 私なりの見解としては未定義だと思ってる。
未定義ならばやったらエラーになる方向にしてくれる方がありがたいという思い。
- 222 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 00:35:36.09 ID:ju8BsRCFM.net]
- >>206
ABIにシステムハンガリアン関係ないだろ… APIを指してるとして、呼び出し側はリファレンスマニュアルなりIDE機能なりを利用して引数の型情報も システムハンガリアンが付いている仮引数名と同時に参照しているはずだよね?情報重複してるけど本当に必要? 仮引数名のシステムハンガリアンの有無に関わらず、APIのシグネチャは用意に変更してはならないものだけど、 そもそも仮引数名はシグネチャじゃないからシステムハンガリアンがついていたって何の保証にもならないよ?
- 223 名前:はちみつ餃子 mailto:sage [2018/02/18(日) 00:51:32.90 ID:OOIPfNvY0.net]
- 重複する情報をコンパイラの支援なく一致させ続けることが出来るだろうか。 いや、できない。
って話よね。 まあ世の中にはそういうのを検査するツールとかもあるんだろうけどさぁ、 そういうツールを導入できる環境ならまともな IDE だって使えるだろう。
- 224 名前:162 mailto:sage [2018/02/18(日) 08:06:35.40 ID:F3zIry6ZF.net]
- >>210
>>211 レスありがとうございます。 shared_ptrだと行けるのでなんかすればコンパイル通るのではないかと 思ったのですがだめなんですね〜。 普通に使う用とカスタムデリータに使う用と二種類用意してやり過ごしてみたいと思います。 template <class T> inline void safe_release(T*& p) { if (p) { p->Release(); p = nullptr; } } template <class T> inline void custom_deleter(T* p) { p->Release(); // p = nullptr; no meaning }
- 225 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 12:41:44.81 ID:OWXn9djh0.net]
- >>207
藻前はレスをきちんと読んでいないのではないか >システムハンガリアンを使っているソースコードを修正してデータ型を変更した際、同時に変数名も変更するコストがかかる。(>>207) に直接対応する元レス>>206は、 >データの属性としてサイズとか型そのものを明示したいとき(>>204) について述べているのでデータ型変更時のコストを言い立てても批判にならない 消極的批判については、アプリケーションハンガリアンすべきときと システムハンガリアンすべきときが 区別できない香具師の的外れな批判がクソウゼーからそうなったのかもしれん、 (ちな両者を区別できない香具師への警戒も>>204で言及済み
- 226 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 12:42:38.82 ID:OWXn9djh0.net]
- >>214
十分賢いIDEが人間のミスを完璧に排除してくれるんならそうかもしれんが システムハンガリアンをしてはいけないという積極的理由にはやはりならないのであった それとも「間違ったコードは間違って見えるようにする 」(>>185)の効能を全否定する? APIの定義は変わらなくとも、それを利用するソースコードがころころ変わり得るわけで、 byStrLength にある日だれかがDWORD型の値を突っ込んだとしたら… こういうケースを考えたら、「接頭辞を見ればデータ内容の属性がワカルというメリット(>>185)」は ありえないぐらい賢いIDEでも使わないと他に代え難いと思うがどうか、 >>198 >嫌いだからハンガリアン意地でも使わなかった おk ようやく建設的な議論に着手できる、
- 227 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 13:01:54.53 ID:Tc3/Tap60.net]
- あり得ないくらいバカなプログラマのことなんか考慮してない
- 228 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 13:02:14.72 ID:hSV7DJYb0.net]
- マウスオーバーで変数の型を確認できたり、縮小変換に警告を出してくれたりする程度のありふれた機能が、ありえないぐらい賢いとな
お前さんはメモ帳でコーディングしてるのか
- 229 名前: mailto:sage [2018/02/18(日) 13:06:54.12 ID:AAhzNgFK0.net]
- >>220
emacs にもそんな機能がほしいと思うことがあります
- 230 名前:デフォルトの名無しさん [2018/02/18(日) 13:20:53.92 ID:y51LwXumd.net]
- システムハンガリアンでミスを減らせるなんて事はない
むしろ害悪
- 231 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 13:27:53.30 ID:Tc3/Tap60.net]
- >>221
俺のemacsには搭載されてるんだが 環境構築もプログラマの腕のうちだからな
- 232 名前:はちみつ餃子 mailto:sage [2018/02/18(日) 13:30:05.77 ID:OOIPfNvY0.net]
- >>221
有るよ。 irony-eldoc や company-mode を入れろよ。 Emacs こそ最強の IDE だろうが。
- 233 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 13:38:55.48 ID:R2RwPqEs0.net]
- 今時システムハンガリアンを使うやつはあり得ないくらいのバカだということが決定しました
- 234 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 13:41:43.01 ID:IMbK2zhKM.net]
- >>218
間違ったコードは間違ったように見えるようにする、について、 あなたが指し示した引用元が言及してるのはアプリケーションハンガリアンについてなんだけど… システムハンガリアンについては否定的意見。 ちゃんと読んだの?
- 235 名前: mailto:sage [2018/02/18(日) 14:10:40.14 ID:AAhzNgFK0.net]
- >>223 >>224
thanks a lot!!
- 236 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 14:15:44.65 ID:IMbK2zhKM.net]
- >>218
APIの仮引数にシステムハンガリアンをつけたことで、間違ったAPI呼び出しが間違ったように見えるのはいつ? APIのリファレンスなり宣言文なりを自分のコードと見比べたときでしょ?その時必ず型情報も見てるよね?情報重複してるよ? あとIDEが自動でミスを排除してくれるなんて書いてないよ?ちゃんと読んで
- 237 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 15:46:49.02 ID:Tc3/Tap60.net]
- 入れる変数の型と引数の型を確認しない奴とかいるのか
暗黙の型変換は警告を出せばいいし どうしても見落とすのならコンパイルエラーにしてしまえばいい あとメンバ変数もテキストの色を変えればいいからm_もいらない
- 238 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 16:01:36.00 ID:dLlRK2Wa0.net]
- m_はホント見苦しい
- 239 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 20:07:07.34 ID:8oVyjimH0.net]
- m_だけならまだ我慢できるけど
this->を必ず付けるルールと併用するのは本当にやめろどっちかにしろ
- 240 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 20:15:52.43 ID:eae4wPFh0.net]
- > this->を必ず付けるルール
破門だろ C++使うなそんなボケどもは
- 241 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 21:14:42.68 ID:SQcbDAgv0.net]
- ちげえんだよなぁ
thisというキーワードが存在してるから、その存在そのものが、それを書かねばならないような強制力を産み出してる 「存在するが、書かなくてもいい」っていうどっちつかずが、一番論争になる その反対が「存在しないから書けない」だ これだと単純明快だ なんせ、書けない 「書くべきか書かざるべきか」のどーーーでもいい二択に迫られると、とたんに宗教になる
- 242 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 21:16:52.71 ID:eae4wPFh0.net]
- キーワードが存在するのと実体が存在することの違いがそんなに大事なのか?
じゃあvtableのキーワードが存在しないことを、おまえはどう考えている?
- 243 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 21:33:09.71 ID:Pbt6vSqU0.net]
- >>231
オケツに_をつけてますわ
- 244 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 21:33:14.46 ID:dLlRK2Wa0.net]
- おれがそのソースを引き継いだらまず初めにやることは一つ
「this->」から「」への全ソース一括置換
- 245 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 21:56:25.56 ID:Ct2k6iqr0.net]
- 「m_」はダメで「_」ならいいってのはなんというか、合理的な理由よりも感覚・感情的なものかね。
- 246 名前: mailto:sage [2018/02/18(日) 21:57:31.39 ID:AAhzNgFK0.net]
- this-> つけるほうが分かりやすくていいと思うのですが、変てこな接尾辞・接頭辞よりも
- 247 名前:デフォルトの名無しさん [2018/02/18(日) 22:00:36.01 ID:tWqaO5mz0.net]
- m_xxx も xxx_ もなんの保証にもならんからな
this->は必ずメンバになるけど
- 248 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 22:37:59.28 ID:UEE7OeWn0.net]
- _はグーグルスタイルの圧力
- 249 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 22:42:10.00 ID:WjKwYRHz0.net]
- 余計な命名規約を作るくらいなら言語機能を使った方が良いわな
this->派だわ
- 250 名前:デフォルトの名無しさん mailto:sage [2018/02/18(日) 23:21:23.43 ID:AjuHfv4B0.net]
- thisで明示した方が所在がハッキリして良いナリ
当職は名前空間もusingせずに明示しろ派ナリ 安易な省略はタイプ数を減らすという軽微なメリットと引き換えに可読性を落としケアレスミスを誘発するという恐ろしいデメリットを孕むナリ
- 251 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 00:00:39.93 ID:hDVR9PRD0.net]
- >>237
「m_」はいらないな ↓ ローカル変数とかと名前が被ってめんどくさい ↓ キャメルケースにはしたくない ↓ 「_」だけ残る
- 252 名前:デフォルトの名無しさん mailto:sage [2018/02/19(月) 00:14:25.92 ID:o8qstbSZ0.net]
- _付けるなら変数の後ろだろ
|

|