C++相談室 part130 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/03/31(金) 08:47:49.65ID:UkLjKqcm0
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。

前スレ
C++相談室 part129
http://echo.2ch.net/test/read.cgi/tech/1483940967/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://echo.2ch.net/test/read.cgi/tech/1478440682/

■長いソースを貼るときはここへ。■
 http://codepad.org/
 https://ideone.com/

[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2017/04/19(水) 23:53:27.98ID:5Pu3YB5qr
>>219
>現行C++にattributeなんてねーよ
何故か規格を読まない奴ほど自信満々に嘘をつく法則
2017/04/20(木) 00:12:38.85ID:tHs+CIU3r
>template <typename T> T max(T a, T b) { return x > y ? x : y; }
>だろ?馬鹿?

>>226の説明が理解できなかった自分の方が馬鹿だった
という事実に230が気付くことは無いだろう
2017/04/20(木) 00:17:15.41ID:4toBdd3vM
いやお前だよ…
236デフォルトの名無しさん (ワッチョイ 1f8f-AhUp)
垢版 |
2017/04/20(木) 05:55:38.33ID:dzDslOc/0
js訛りのC++か
気がつくとぼっちだぜ
んなキモいことしてっと
2017/04/20(木) 06:46:57.40ID:4gdppVlz0
そういやC++のきれいなコードあんまり見たことない
2017/04/20(木) 12:06:51.73ID:nHxDShTLd
俺のコードはスカスカで綺麗だぜ!
2017/04/20(木) 16:31:13.15ID:dSLwtaqZ0
         ,,-―--、
        |:::::::::::::;;;ノ
        |::::::::::( 」
        ノノノ ヽ_l
       ,,-┴―┴- 、    ∩_
     /,|┌-[]─┐| \  (  ノ
      / ヽ| |  バ  | '、/\ / /
     / `./| |  カ  |  |\   /
     \ ヽ| lゝ    |  |  \__/
     \ |  ̄ ̄ ̄   |
      ⊂|______|
       |l_l i l_l |
       |   ┬    |
2017/04/20(木) 16:39:26.78ID:pGeg/NAi0
俺のコードにはファウンデーションを丹念に塗ってある
2017/04/20(木) 21:34:46.16ID:iTkbXITvr
>>232
ユニバーサル参照にするとどういう制限が発生するのか分かった上でやっているのか?
2017/04/20(木) 21:45:04.01ID:OBF/5/VT0
>>240
MFCとか綺麗だよねw
2017/04/20(木) 22:40:39.82ID:16AwdhdC0
>>241
はて?制限・・・そんなのあったっけ?
(あわててEMC++をめくりながら)
2017/04/21(金) 14:01:58.43ID:jq02h6/Cr
Effective Modern C++のItem 30を読まなくても幾つかは日常的に気付きそうなものだが
struct A { constexpr static int N = 1'000; };

f_pass_by_value(A::N); // OK
f_pass_by_universal_ref(A::N); // NG
245デフォルトの名無しさん (ワッチョイ a375-OSeR)
垢版 |
2017/04/21(金) 14:33:26.68ID:SD7KIjS10
>>244
それ -std=c++1z で通るのな。規格変わったん?
2017/04/21(金) 14:40:59.59ID:jq02h6/Cr
>>245
変わる予定
流石にC++14の言語仕様はクソだった
N4659 D.1山椒
2017/04/21(金) 14:43:15.61ID:jq02h6/Cr
だがこれはC++17でも通らない
struct A { int b : 2; };
f_pass_by_ref( A{}.b );
2017/04/21(金) 14:47:58.15ID:uAFMuOM4d
クソザコなので日常的には何も気付かない
2017/04/23(日) 11:36:55.65ID:onWybp6E0
質問
std::map<key_t, int>にkey_t型のブツの個数を格納したいのですが、どう書くのがSTL的に推奨?
仮に
typedef std::map<key_t, value_t> dic_t;
dic_t dic;
key_t key;
であるとして、
(1) std::pair<dic_t::iterator, bool> result = dic.insert(dic_t::value_type(key, 1));
  if (!result.second) { result.first->second++; }
(2) dic_t::iterator it = dic.find(key);
  if (it == dic.end()) { dic[key] = 1; } else { it->second++; }
(3) その他

みたいな?
2017/04/23(日) 11:40:30.73ID:onWybp6E0
補足>>249
>ブツの個数を格納したい
というのは、keyの出現も個数もわからない状態から、key出現毎に数えていきたいという意味です
251デフォルトの名無しさん (ワッチョイ 2756-2VNN)
垢版 |
2017/04/23(日) 11:58:50.37ID:VmCxZvh+0
std::map::size で取得
2017/04/23(日) 12:31:44.54ID:XHzgUmp00
>>249
++dic[key];
2017/04/23(日) 13:01:20.45ID:E5WPNsUIr
質問者の日本語がクソだと251のようなレスがついてしまっても仕方ない
2017/04/23(日) 13:59:45.57ID:onWybp6E0
>>252
ゆ、許された…!
255デフォルトの名無しさん (ワッチョイ 0b00-amNx)
垢版 |
2017/04/23(日) 21:33:17.66ID:+WngXvwH0
よくわかんないけどmax_elementでゲッツした数字をインクレメントしてそいつをキーにすればいいなじゃないか?
2017/04/23(日) 22:33:59.07ID:W0RIoSIf0
からのターン
2017/04/25(火) 01:55:12.08ID:2owVuizj0
fopen()を使う場合は、

shared_ptr<FILE> fp( fopen( "ファイルパス", "r" ), fclose );

と書けるんですが、
fopen_sのように、戻り値でFILE*を取得できない場合は、shared_ptrにできないんでしょうか?
258デフォルトの名無しさん (ワッチョイ 0b00-amNx)
垢版 |
2017/04/25(火) 02:09:15.69ID:L5bW9/iP0
ステップ1:shared_ptr<FILE> fp( [] { FILE* fp; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() );
ステップ2:おわり

マックはかんたんなんだ。
2017/04/25(火) 07:41:45.06ID:2owVuizj0
>>258
おおお、なるほど!ラムダ式が使えるんですね!
おかげさまでうまくいきました!
この方法なら、shared_ptr化できる対象がさらに増やせますね。

どうもありがとうございました!
2017/04/25(火) 08:33:19.57ID:OEZA+HZE0
クラス化したほうがいいよ
2017/04/25(火) 09:08:54.62ID:qHdDYIsy0
>>258
最初にNULL入れておかんと未定義になるかもでよ
2017/04/25(火) 14:04:32.36ID:o5+7I7e76
超初心者です。

Ptr<Hoge> abc::createHoge()
abc::Hoge::do()

すると、
静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります
と言われました。
Hogeのdoを使うにはどうすればいいですか?
2017/04/25(火) 14:18:34.30ID:P05pQrZGM
>>262
Ptr<Hoge> p = abc::createHoge();
p->do();
あとは初心者スレに行くべし
2017/04/25(火) 14:28:56.92ID:o5+7I7e76
できました!ありがとうございます
265デフォルトの名無しさん (スップ Sd4a-Et+B)
垢版 |
2017/04/25(火) 14:33:18.17ID:Z7zV+yycd
いえいえどういたしまして
2017/04/25(火) 22:33:09.32ID:ggixqTU6r
>>261
他人をおとしいれるのがそんな楽しいのか?
267デフォルトの名無しさん (ワンミングク MMfa-OSeR)
垢版 |
2017/04/25(火) 23:25:19.17ID:xMNxUhiOM
>>266
そんな事で陥れられるの?生きていくの大変そうだね。
2017/04/25(火) 23:34:24.96ID:9Zr4ftW/0
>>266
単なる勘違いとか無知とかかもしれないのに、なんでそんなに悪意に満ちた解釈をするのだろう。
それに、その書き込みで誰かが陥れられるというなら、攻撃するより先にその誰かを助けてあげる書き込みをする方がいいんでないか?
2017/04/25(火) 23:34:51.11ID:oTWBT7hM0
std::shared_ptr<T>::get()
2017/04/26(水) 00:03:07.94ID:/Py/BDPD0
ステップ1:shared_ptr<FILE> fp( [] { FILE* fp=0←ココ; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() );
ステップ2:おわり
271デフォルトの名無しさん (ワッチョイ 0b00-amNx)
垢版 |
2017/04/26(水) 01:30:30.17ID:zA6HVqFs0
止めて!私のことで争わないで
272ich1 (アウアウウー Sacf-CGRX)
垢版 |
2017/04/26(水) 07:22:16.30ID:KcpaNie5a
https://goo.gl/Y4tSAe
これは嘘でしょ?
本当なら落ち込むわ。。
2017/04/26(水) 08:02:32.64ID:jkGhVm4nr
>>268
>助けてあげる書き込みをする方がいいんでないか?
>>261さえ無ければ質問者は幸せになれるのだから、質問者がリファレンスを見直せば一瞬でわかるような内容は
「アホに惑わされず一読したままの解釈で正しい」ことだけフォローすれば十分ではないか
2017/04/26(水) 17:54:18.88ID:BTdjOnYo0
http://andriasang.com/com8ig/mt_framework/images/21dxs/full.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_02.jpg
http://game.watch.impress.co.jp/img/gmw/docs/608/483/pan_03.jpg

こういうGUIって、どうやって作るんでしょうか?
Win32APIで頑張れば作れるんでしょうか?
それとも、ライブラリが売られたりしているんでしょうか??
2017/04/26(水) 18:00:10.68ID:/Py/BDPD0
TVTestのソースが参考になる
2017/04/26(水) 20:24:27.91ID:5Saru3KQ0
もちろん作れる
自分でレンダリングしなきゃいけないしテクスチャも描かないといけないけど
2017/04/28(金) 01:35:45.00ID:0T/EiQwUp
こういうの作るならQtとか使いたくなる
278デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
垢版 |
2017/04/28(金) 09:33:31.10ID:UVvcEOOo0
>>273
質問者がリファレンスを見直せば一瞬でわかるような内容なら別にフォローの必要もないだろ。
調べないような奴なら安全な方に倒れていた方が良い。無駄でもたいしたコストではない。
よって >>261のせいで質問者が不幸せになるという根拠が無い
2017/04/28(金) 09:48:07.09ID:mPeDNIgc0
横だけど >>274 のGUIって Qt? GTK+?
Linuxに引っ越ししようと思っているんだが、GUIツールにどれを選択しようか悩み中。

昨今のマイクロソフトはファック過ぎる、二度と使う事は無いと思っていたC++に戻る事になりそうだ。
2017/04/28(金) 12:15:44.81ID:4D2iUcPod
こういうGUIって、C#で簡単に組めたりするのかな?
2017/04/28(金) 12:46:51.26ID:mPeDNIgc0
>>280
こういうデザインにしたいと思うなら困難だと思う
結構オリジナリティーあるパーツだし
2017/04/28(金) 15:07:30.49ID:MOddalxma
>>274
画像をWindowとして表示するって裏技がWin32であったな。
懐かしい。。。
Vista以前のデスクトップアクセサリとかは、そう言う類の裏技で作られてた。
2017/04/28(金) 18:26:35.16ID:swDsSHUMr
>>278
一瞬でわかるはずの内容でも堂々と嘘を吹き込まれると不安になるだろうから安心を与えることには意味がある
と言ったつもりだったけれど日本語は苦手だった?
284デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
垢版 |
2017/04/28(金) 22:50:15.26ID:UVvcEOOo0
>>283
アレが堂々と嘘ついてるように読めるなら、お前の日本語と俺の日本語違うんだろうね。
2017/04/28(金) 23:01:16.62ID:roW/lMqL0
>>283
コイツ多分学会信者
2017/04/29(土) 02:12:01.00ID:XzsrE9yB0
>>279
コンシューマ向けのゲームエンジンだし自前なんじゃ?
2017/04/29(土) 09:23:14.57ID:nyANDfpKa
学会?
創価の方も、大学的なのも縁が無いが。。。
2017/04/29(土) 22:43:17.83ID:QeCXmDWM0
ヘッダファイルを作らずに他ファイルからの利用は前方宣言だけですますのって作法的に問題はない?
2017/04/29(土) 22:55:12.24ID:3c3Uk9T30
関数だったら数による
290デフォルトの名無しさん (ワッチョイ 6bda-L1Lv)
垢版 |
2017/04/29(土) 23:03:29.29ID:S/2IADGO0
>>288
その前方宣言をヘッダファイルに書いといて欲しいな。
291デフォルトの名無しさん (ワッチョイ db00-HpWq)
垢版 |
2017/04/29(土) 23:08:33.30ID:hqOpRyPj0
そいつが実装の内部で利用するもので参照先が1ファイルぐらいだったら別にいいんじゃないかな
複数あったら流石にヘッダに書いた方がいいよ
292デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
垢版 |
2017/04/29(土) 23:15:36.74ID:xdExBL2r0
引数とか変えたときリンク時(extern ”C”だったら実行時)までエラーが解らないのめんどくさくない?
2017/04/29(土) 23:16:41.78ID:Ng1HwepU0
でもメンテ時に混乱しそう
2017/04/30(日) 08:25:35.26ID:wQZYXO/b0
>>292
> (extern ”C”だったら実行時)
知らん
何の処理系?
2017/04/30(日) 09:35:48.73ID:DBp9z9wf0
みなさん、ご回答ありがとうございました。
GUIライブラリって調べてみたら山ほどあるんですね。
>>274のツールもGUIライブラリを使ったのかもしれませんね。
まぁ、カプコンならゼロから作っている可能性もあるかもしれませんがw

調べてGUIライブラリの中ではimguiが最も便利そうだったので、
使ってみることにします。

ありがとうございました。
296デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
垢版 |
2017/04/30(日) 12:29:31.69ID:kmaYjpOe0
>>294
引数とか変えたときって言ってるじゃん?
extern ”C”で引数変えた時にシンボル変えるような処理系の方が知らんわ
297デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
垢版 |
2017/04/30(日) 12:42:40.89ID:kmaYjpOe0
返り値の型を変えたときもそうだけど、変更したとき未定義動作になりやすいからヘッダファイルは作った方が良いよ
2017/04/30(日) 14:56:05.47ID:Lu1XcywOr
『extern ”C”だったら実行時)までエラーが解らない』
どうしてこう他人を陥れたがるのか不思議で仕方ない
2017/04/30(日) 15:34:31.43ID:6FmE5H1T0
>>266>>298の言う「陥れる」の意味がさっぱりわからんのだけど、だれか解説してもらえないだろうか?
2017/04/30(日) 18:30:55.32ID:iF9ITzdSp
ぼくの考えとちがう
って意味だよ
2017/04/30(日) 19:24:02.13ID:SNt5gcRU0
>>295
>>274のカプコンのがどうなのかは知らんけど、中小のゲーム会社でも自前で作ってるのを見たことある
コンシューマの経験はほとんど無いんでわからんけど、実際の環境での表示と調整を、「どっちも」実機でやらないと話にならんからだろうね
Windows上のゲームとかだと実機も開発もWindowsで済むから、Direct3D上でUIまで作る必要ないけど。
2017/05/01(月) 17:50:14.23ID:JVOYymf/d
>>300
そういう意味だったのか。
2017/05/03(水) 00:04:07.99ID:yi3RDMFU0
皆さんカバレッジってどうやって計測してますか?
環境がLinuxなのでgcov+lcov使って見てるんですが、Branch Coverageを見ると大半の行(分岐のない行を含む)で分岐通ってないって計測結果が出てきて使い物にならず困ってます
304デフォルトの名無しさん (ワッチョイ 7b75-Eih5)
垢版 |
2017/05/03(水) 00:19:05.08ID:jU3FK0a/0
>>303
実際通ってないんでしょ
例えばtemplateのコードだと見た目は分岐になっていなくても型で分岐になってるからね?
2017/05/03(水) 00:41:17.84ID:uzk5Z1ua0
>>301
ありがとうございます。
ゲーム開発はたいへんですね・・・。
Windows開発でOKな自分は恵まれてるなぁw
2017/05/03(水) 01:39:50.15ID:yi3RDMFU0
>>304
じっくり見てみるとSTL使ってる所が軒並みBranch Coverage未達になってるようなので、インラインで展開されたSTLの中に"型で分岐"してるって箇所があると未達扱いになってるんですかね
どっちにしても使い物にならないと思うんですが、何か設定見逃してるのかなあ
2017/05/03(水) 04:17:06.25ID:QvJixJfx0
テンプレコードを計測対象から外す
2017/05/04(木) 00:37:27.95ID:p6U1yQ51r
「分岐通ってないって計測結果が出てきて使い物にならず困ってます」
 ↓
「計測対象から外す」

これがアスペの思考というやつか
2017/05/04(木) 00:38:15.73ID:1zBs0s1k0
ばれなきゃ問題ない
2017/05/04(木) 07:12:56.30ID:wet+9Z670
ファイル毎にカバレージ結果が出力されててテンプレコードのファイルもあればそれだけはずす
311デフォルトの名無しさん (ワッチョイ 2775-T0jS)
垢版 |
2017/05/04(木) 07:29:40.84ID:o/Y/60hm0
普通カバレッジ計測というかテストはデバッグビルドでするよね?
なんでインライン展開されてんの?
2017/05/04(木) 07:50:33.85ID:z7PkcQKp0
ん?
2017/05/04(木) 08:18:30.19ID:Qfe4sTHU0
>>311
もちろん-O0 -gでやってますが、STL使ってるところでカバレッジ未達の結果になりますね

gcovに拘るつもりも無いので、皆さん普段どうしてるのか教えて頂けませんか?
2017/05/04(木) 08:40:35.32ID:h77SQQVQ0
「なんでインライン展開されてんの?」
これが会話の出来ないアスペというやつだな
2017/05/04(木) 08:45:37.98ID:fxaUnXhO0
アスペルガー症候群の話が一種の希望になっているのだな
2017/05/04(木) 09:21:07.22ID:wA0ba8dUO
へえ
317デフォルトの名無しさん (ワッチョイ 2775-T0jS)
垢版 |
2017/05/04(木) 09:54:23.37ID:o/Y/60hm0
>>314
え?どこが?
318デフォルトの名無しさん (ワッチョイ 2775-T0jS)
垢版 |
2017/05/04(木) 09:55:59.68ID:o/Y/60hm0
>>313
俺はgcov使ってるけど行カバレッジしか見てないよ
319デフォルトの名無しさん (ワッチョイ 2775-T0jS)
垢版 |
2017/05/05(金) 14:14:29.37ID:b5hiFaeg0
自分の思った答えと違う物が出てきたら相手をアスペと言って話を打ち切る方が会話の出来ない奴だな
320デフォルトの名無しさん (ワッチョイ 360d-vxmx)
垢版 |
2017/05/05(金) 17:05:00.51ID:vdKQUTyP0
意味もよく知らずに単なる記号として使ってるのまる出しだしね
2017/05/07(日) 07:51:48.66ID:iaJElGo90
質問ッス
ヘッダファイルに
 class LongLongLongNameClass { .... }
という長い名前のクラス定義を書いて、
.cppの方にメソッドの本体を書く場合、
 LongLongLongNameClass::LongLongLongNameClass() { ... } // コンストラクタ
 int LongLongNameClass::someMethodA(int x, int y) { ... } // メソッド
...
とか繰り返しLongLongLongNameClass::をタイプしたりコピペする羽目になり、
この手間を減らしたいのですが何か良いエディターとかプラグインとかはご存知ありませんか、
VCのクラスウィザードは書式がほぼ決め打ちで自由に弄れないのでイヤン
2017/05/07(日) 07:54:18.33ID:nwkz2Klr0
using
2017/05/07(日) 08:07:21.46ID:iaJElGo90
>>322
説明が抜けてすみませんが
 LongLongLongNameClass::LongLongLongNameClass() { ... } // コンストラクタ
 int LongLongNameClass::someMethodA(int x, int y) { ... } // メソッド
 ...
というスタイルは変えずに入力したいので、usingやプリプロセッサは極力使わない方向でおながいします
ちな原則usingの使用は関数スコープ内のみとさせていただいております
(ソースコード先頭でusing namespace std;とやる人が定期的に現れるため
2017/05/07(日) 08:27:15.49ID:FjvRjK2r0
C++の質問というよりエディタ側で解決したいならエディタ側のスレで聞いたほうがいい希ガス
2017/05/07(日) 09:08:19.96ID:UkiHSZAH0
CTRL+Vを何種類か格納できるソフトがあるだろう
2017/05/07(日) 09:10:08.52ID:nwkz2Klr0
VSCode辺りのプラグインになんかあるんジャマイカ?
2017/05/07(日) 09:51:45.18ID:/CYUNTD10
Visual Studio使ってるなら普通にIntelliSenseで補完してもらうんじゃだめなの?
328デフォルトの名無しさん (ワッチョイ ef00-8Vn8)
垢版 |
2017/05/07(日) 10:58:48.07ID:weBnw+MW0
このクソコードを書いたのは誰だぁ! バッ!ってやりたいけど張本人は逃亡済みなんだろうな
2017/05/07(日) 11:44:37.51ID:onq3BzaP0
Visual studioならヘッダに宣言を書いて、それを右クリックで空の関数を自動実装してくれる機能がある
2017/05/07(日) 11:56:22.15ID:w48Ptm+H0
>>321
試してみたら普通にIntelliSenseで補完できるけど?
俺はVisualAssist(有料)というのを愛用していてこっちの方が使い勝手いいけど
2017/05/07(日) 12:27:41.53ID:iaJElGo90
>>329
スマンいま思い出したVS2015とかだったらそれができたんだったorz
どうりでタイピングorコピペ作業による時間浪費に対して悩んでる人が居ないのか、
332デフォルトの名無しさん (ワッチョイ 3e0d-Yh7p)
垢版 |
2017/05/19(金) 17:53:08.12ID:/7Hxktnz0
C++17か、C++20でもいいけど
virtualをextern "C"みたいにブレースで範囲指定できるようになって欲しい
■ このスレッドは過去ログ倉庫に格納されています