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/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"みたいにブレースで範囲指定できるようになって欲しい
2017/05/19(金) 18:07:35.98ID:TovPGI11M
c++って、その手の構文糖は採用しないだろ。
2017/05/19(金) 18:14:00.03ID:6plAc3kp0
んだよ、Pascalでwith使っとけやトーシロー
335デフォルトの名無しさん (ワッチョイ 2a76-ysFl)
垢版 |
2017/05/19(金) 18:16:16.14ID:A3DJr2FW0
defaultって日本人は標準という意味で使っているけれど、本当は『不履行」とか否定的な意味の単語だよ
de factoと間違えて使っている
336デフォルトの名無しさん (ワッチョイ 6b00-Gjiu)
垢版 |
2017/05/19(金) 19:01:46.55ID:/MnRfLXT0
いい加減純粋仮想関数の = 0を見直すべき
2017/05/19(金) 19:09:38.92ID:w2H0BIW7d
>>335
標準なんて意味で使っている人間はいないと思われる
「既定の」とか「省略時の」だろう。

あと複数の意味のどれかが本来の意味であとは本来じゃないなんて了見が狭いね。
338デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/19(金) 22:09:56.69ID:/7Hxktnz0
>>333
その手のって、extern "C"では採用してんじゃん
多相的クラスやインターフェイスを作ってるとき、
キーワードvirtualのタイプ数って無駄な苦しみだと思わない?
多相的クラスでデストラクタがvirtualとか自明じゃん
2017/05/19(金) 22:28:20.75ID:ZQ0nZzJJM
>>338
デストラクタがvirtualなのが自明なのは継承前提のクラスだけでしょ
ランタイムオーバーヘッドを可能な限りなくしたいC++でそんなこと前提にされてもって感じだけど
まぁ確かにclassのプリフィクスにabstractとかつけたら全部virtualになるとかはあってもいいかもね
2017/05/20(土) 03:08:45.60ID:e3UL0Vlz0
ヘッダファイルに、すでに他のヘッダファイルで、宣言されているクラスが 
以下のように書かれているのは、なんのためなのでしょうか?


class CHoge_1; // すでに他のヘッダファイルで宣言済み
class CHogehoge; // すでに他のヘッダファイルで宣言済み
class CTestClass : public CMainClass //派生:基底
{
.......
.......
}

よろしくお願いします。
2017/05/20(土) 03:19:15.34ID:T/6nYsY80
>>340
「前方宣言」でググれ
342デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/20(土) 05:47:54.27ID:AtO1B5PX0
>>339
継承を使うからってデストラクタのvirtualが自明って?
んなわけねえだろ、たとえばprivate継承を使うようなケースでは
おまえの言うとおりオーバーヘッドを重視することがあるし
インターフェイスでだっていちいちデストラクタなんぞ作んねえ
しかし多相的クラスというからにはアップキャスト前提は間違いない
俺はそこを言ったんだよ

で、
class [[abstract]] oddsandsods; //これで全部virtualということか
うん、そういうのでもいい
キーワードがちょっと気になるかな
[[polymorphic]]かなって思う
2017/05/20(土) 10:19:27.00ID:e3UL0Vlz0
>>341
ありがとございます。
りかいできました!
2017/05/20(土) 15:27:14.98ID:dnejRURa0
お前らクラス図書いてる?
テンプレートとか関数オブジェクトとか面倒くさ過ぎなんだけど
345デフォルトの名無しさん (ワッチョイ cacd-bwHs)
垢版 |
2017/05/20(土) 16:43:45.54ID:7xanTQLT0
完全なドキュメントよりも、動くソフトウェア
の理念の元書いておりません
346デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/20(土) 17:47:18.38ID:AtO1B5PX0
書いたことあるけど、泣けてくるぞ
わざわざ人間がやる必要性が全く感じられないから
2017/05/20(土) 19:02:29.38ID:QnLfIsPY0
クラス図は書かないけど
コード書く前にこれとこれを用意してこれとあれがこうなってこうみたいな下書きをノートに適当に書いてる
348デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/20(土) 19:31:29.85ID:AtO1B5PX0
ああ、それならやるね
結局、ずいぶん違ったものが出来てくるけどw
349デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/20(土) 19:31:49.65ID:AtO1B5PX0
うん、正直にそれは恥だ
2017/05/20(土) 23:17:42.25ID:dnejRURa0
まあ、そんなもんだよなあ
考えの整理するのに書くのは良いんだけど、実装に追従しろとか実装の前に書けとか言われると怠くて敵わんわ
2017/05/21(日) 08:19:58.20ID:MWprk4Bd0
チームでやるならクラス図かいとかないとカオスにならない?
2017/05/21(日) 08:27:25.16ID:AwcA0VMJM
実装前に書いたメンテされないクラス図なんて役に立つわけねーやろ
自分の設計用に下書きだけして、あとはDoxygenに任せればよろしい
2017/05/21(日) 11:02:09.47ID:a7r1hz6X0
目的と使い方と意図がちゃんと書かれたコメントのほうが重要
2017/05/21(日) 11:42:21.53ID:N/0f8z0A0
astah UMLを使えば
 (クラス図<-->シーケンス図)→コード(自動生成)
というのがだいたいシームレスにできる

ずいぶん違ったものが出来てくるのは慣れの問題かと、
(UML自体かなり計算機の仕組み寄りで、それほど直感的な表現方法とは言えない)
2017/05/21(日) 11:43:44.12ID:N/0f8z0A0
コードに書かれていることが何よりも真実というのは同意
356デフォルトの名無しさん (ワッチョイ aa18-JCxV)
垢版 |
2017/05/21(日) 12:59:09.81ID:ViqOYprV0
>>353
これな
357デフォルトの名無しさん (ワッチョイ aa18-JCxV)
垢版 |
2017/05/21(日) 13:00:19.74ID:ViqOYprV0
ただ、コメントすらメンテされなくなるのが辛いよ…
358デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/21(日) 13:37:07.31ID:EhbYbiNc0
コメントのバグは検出不能なのが厄介
2017/05/21(日) 13:58:18.34ID:4YmMkUMIM
自分は書いてるよ。
大枠だけ書いて細かなクラスは表現しない(したくない)から、むしろツールは使わずに手書きで書いてる。
2017/05/21(日) 14:15:03.88ID:G67hupcsr
この手の議論で特徴的なのが書かない派の殆どは
自分が書けなかった理由を書かなくて良い理由にすり替えていること
361デフォルトの名無しさん (ワッチョイ 9e0d-Yh7p)
垢版 |
2017/05/21(日) 17:51:48.31ID:EhbYbiNc0
「ほとんど」でうまく逃げてるな
2017/05/21(日) 19:37:38.96ID:D/aE/Z0L0
設計書に書いたことをまたコードに書いたら
メンテの手間が増えるじゃないか
2017/05/21(日) 23:17:17.16ID:N/0f8z0A0
コードの他に何か残すなら、単体テスト(コード)とか試験仕様書とかを書けば良い
単体テスト(コード)や試験仕様書なら、少なくとも書いた範囲についてコードとの不一致は有り得ないのだから
2017/05/23(火) 07:38:45.51ID:K3FeDoGDa
enumの中身を漏れなくする方法はないの?
365デフォルトの名無しさん (ワッチョイ 0375-LToT)
垢版 |
2017/05/23(火) 07:54:11.86ID:10krpFBv0
>>364
?
2017/05/23(火) 08:12:47.34ID:I6yYOIGbr
>>364
ほれ
namespace himitsu {
enum more {aaa};
}
using more = himitsu::more;

auto e = more::aaa;
2017/05/23(火) 09:32:50.64ID:J4YcG+3k0
今ならenum classやろ
enum class more{aaa};
368デフォルトの名無しさん (ササクッテロリ Sp03-g8s4)
垢版 |
2017/05/23(火) 22:40:27.44ID:GqYsAhEPp
>enumの中身を漏れなく(イテレート)する方法はないの?
2017/05/24(水) 07:25:20.05ID:OFlbMgowM
>>368
ちょっとはググれカス
https://zenmai.wordpress.com/2009/11/11/enum%E3%81%AE%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E3%82%92foreach%E3%81%A7%E4%BD%BF%E3%81%86%E3%80%8Cc/

c# foreach まで入力したら enum が補完されるぐらいだからそう言うことをやりたい奴は多いのかも
2017/05/24(水) 08:14:20.55ID:Uh0d2nCgr
安定のドコグロMM
2017/05/24(水) 14:16:08.43ID:K4LsGUxm0
Cの時代からenumは未だに慣れない
2017/05/24(水) 22:12:49.22ID:Uh0d2nCgr
むしろCでintや#defineだらけのenumを使わないコードがずっと疑問だった
2017/05/24(水) 22:17:53.05ID:QKoHZUhX0
enumに文字列定義でけんの?
374デフォルトの名無しさん (ブーイモ MM4f-JCxV)
垢版 |
2017/05/24(水) 22:57:19.03ID:RrwKXt6vM
>>369
何故C#?
2017/05/25(木) 05:00:36.62ID:sUw+9KVjM
>>374
すまん寝ぼけてた
C++ は無理そうだな
Range-based for で何とかしてくれると嬉しいんだけどね
2017/05/26(金) 20:36:20.09ID:jKduUXcUd
言語ではenumの列挙はサポートされてないから、そのまま必要なデータを手書きで記述するか、
プリプロセッサマクロと#includeで汚く書くしかないね。
2017/05/26(金) 20:41:12.76ID:jKduUXcUd
DEFINE_HAGE(baka)
DEFINE_HAGE(boke)
...
こういった内容のテキストファイルを用意し、別のソースでマクロDEFINE_HAGEをテキトーに定義して#includeで
読み込むという素人お断りのテクニックがある。
2017/05/26(金) 23:46:38.90ID:Fq1j41HH0
http://i.imgur.com/VFje2sYh.jpg
2017/05/27(土) 01:04:47.55ID:uGocpGwpd
生き残ってますか、人間ども?
2017/05/27(土) 02:22:34.43ID:rhNlL3QR0
キミも相変わらずだねw
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況