1 名前:デフォルトの名無しさん (ワッチョイ f37a-QmV0) mailto:sage [2017/03/31(金) 08:47:49.65 ID:UkLjKqcm0.net] 次スレを立てる時は本文の1行目に以下を追加して下さい !extend:on:vvvvv:1000:512 C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。 前スレ C++相談室 part129 echo.2ch.net/test/read.cgi/tech/1483940967/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 echo.2ch.net/test/read.cgi/tech/1478440682/ ■長いソースを貼るときはここへ。■ 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
210 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 14:36:42.93 ID:37YtuUfA0.net] >>205 あーなるほど分かったわ。確かにこれの方が直感的で良いわ。 事実として俺はテンプレートに慣れてないからね。 まあとにかくありがとう。
211 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 16:00:45.80 ID:37YtuUfA0.net] すまんが次の質問。 テンプレート内部で型を決めうちしたいのだが、この書き方ってある? 例えば内部で高精度で演算したい時、引数型が 引数double -> 内部double 引数float -> 内部double 引数short -> 内部int64 とか。引数型に対して内部型は確定的に決まる。 今は template<typename T, typename Ti> double somefunc(T* src0, T* src1, int t){} で引数型 T、内部型 Ti としてる。 ただ、これだといちいち呼び出し時に書かないといけない。 単発なのは我慢していたのだけど、リファクタを進めていくと、 上位関数が template<typename T> で済んでいるのに、内部関数が Ti を必要とするから 上位関数も template<typename T, typename Ti> となりだしてちょっとウザくなってきてる。 Ti を何とかして潰せれば呼び出し時にも書かなくて良くなり、全てすっきりするのだが。
212 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 16:07:17.99 ID:37YtuUfA0.net] すまん、ググったら条件分岐がヒットした。 というか2段重ねれば良いだけか?という気がしてきた。 あまり自信はないが。
213 名前:デフォルトの名無しさん (ワンミングク MM3f-ZHy1) mailto:sage [2017/04/19(水) 16:15:43.91 ID:15mBJgd3M.net] type_traits使う
214 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 16:30:01.80 ID:37YtuUfA0.net] >>210 > type_traits 見た目それようだが、何故かサイズが取れないのね。 ただどのみち俺の環境(VS2008)では使えないようだ。 とはいえ、今回の質問はどうやらラップすれば終わりのようだ。 お騒がせして申し訳ない。
215 名前:デフォルトの名無しさん (ワッチョイ 0b75-93S+) [2017/04/19(水) 16:39:33.18 ID:q88wQIwA0.net] >>209 色々方法あるけど *1 単純にオーバーロードを重ねる template<typename T, typename Ti> double somefunc_impl(T* src0, T* src1, int t){} double somefunc(float* src0, float* src1, int t){ return somefunc_impl<float,double>(src0,src1,t); } double somefunc(short* src0, short* src1, int t){ return somefunc_impl<short,int64 >(src0,src1,t); } double somefunc(double* src0, double* src1, int t){ return somefunc_impl<double,double>(src0,src1,t); } *2 trait (somefunc_internal_typeを定義していない型だけ渡すとコンパイルエラー) template<typename T>struct somefunc_internal_type{}; template<>struct somefunc_internal_type<float>{ using type = double; }; template<>struct somefunc_internal_type<double>{ using type = double; }; template<>struct somefunc_internal_type<short>{ using type = int64_t; }; template<typename T, typename Ti = somefunc_internal_type<T>::type> double somefunc(T* src0, T* src1, int t){} 規則性があるならtraitsはenable_ifとかで少なく書けるが、深入りするとC++の闇にのまれるからおすすめしない using type = double; を typedef double type; に変えたらたぶんVS2008でも使える
216 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 16:54:59.37 ID:37YtuUfA0.net] >>212 ありがとう。まさに今その1をやったところ。 地味だがこれが一番分かりやすい。 ラップしまくるのは気になるが、C++の世界だとコンパイラが最適化してくれることを期待するんだよな? traitは後日試してみるわ。本来はそっちの方が本筋なのだろうし。 今回は精度最高型で演算するだけだから規則は簡単。 char, short, int -> int64 float, double -> double だね。
217 名前:デフォルトの名無しさん (ワッチョイ 0f92-D+C1) mailto:sage [2017/04/19(水) 17:05:51.26 ID:zKKKUYsP0.net] >>209 俺もパッと思いつくのはenable_if使って2段にすることだな こんな風に https://ideone.com/5VIuuw もっとスマートなやりかたがあったら教えて欲しい
218 名前:デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz) mailto:sage [2017/04/19(水) 19:31:59.93 ID:suSDkWlT0.net] >>213 >コンパイラが最適化してくれることを期待するんだよな? まず試せw VCで逆アセンブル見るなり https://gcc.godbolt.org/# ↑これで見るなり 厳密には知らんが、関数テンプレートは大体inlineつけなくても最適化でインライン展開の対象になる
219 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 19:52:27.59 ID:37YtuUfA0.net] >>215 まあそうなんだけど、今回については ・仮に遅くなったとしてもやる ・最終的にはアセンブラに差し替える という、主に編集上の都合なのでどの道やるんだわ。 最悪、手でコピペして展開すれば直結出来ると分かっているから、その辺は安心。 テンプレート慣れしてないから、いちいちラップするのが気持ち悪いが、 そんなもんだというのなら慣れるしかない。 ただやっぱ、見た目直感的なコードではなくなるのが残念なところ。 varにしたら自動的にテンプレートになって、 文句がある場合のみ手動で特殊化が一番助かるんだが。
220 名前:デフォルトの名無しさん (ワンミングク MM3f-ZHy1) mailto:sage [2017/04/19(水) 21:04:11.42 ID:15mBJgd3M.net] >>216 >varにしたら自動的にテンプレートになって、 >文句がある場合のみ手動で特殊化が一番助かるんだが。 いやそれがtraitsなんだけど…
221 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 21:47:13.23 ID:37YtuUfA0.net] >>217 いやあれ属性でやろうとしてるでしょ。 普通に型名で書いた方が楽だよね。特殊化みたいに。 変に汎用化させようとして、余計に分かりにくくなってるよ。 なんつーか、C++ってそっちの傾向あるでしょ。変に技巧に凝りすぎというか。 テンプレートにしても、編集上の努力であって、新機能追加やバグ取りにはならないし。 努力の方向を間違えたら完全に空回りてしまう。 varで書かせてくれよとマジで思うよ。
222 名前:デフォルトの名無しさん (ワンミングク MM3f-ZHy1) mailto:sage [2017/04/19(水) 22:18:24.03 ID:15mBJgd3M.net] varと書けるようにするとなぜ新機能開発やバグ取りにできるの?? templateで何ができないと言ってるのかまじで意味わからん templateをマクロと同じように使おうとしかしてないから編集上の機能に見えるだけでしょ? ランタイムのオーバーヘッドをなくすために使うんだよ普通は てか属性でやろうとしてるってなんだよ、現行C++にattributeなんてねーよクソカス 高精度型にキャストしたいならtraitsとdispatch用の関数書くだけ
223 名前:デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz) mailto:sage [2017/04/19(水) 22:29:39.45 ID:suSDkWlT0.net] >>218 言いたいことはわからんでもないけどな 他人はどうか知らんが、自分はSTLやboostのコードを分かりやすいとは全く思わん ヘッダで公開してるから(そうせざるを得ないんだが)アレを全員目指すべきと勘違いしてる人はいるかもしれんw 言ってしまえば、テンプレートで設計の幅広げたり高速化したり、ってのはあくまで副産物的に生まれたトリックに過ぎんし そういうライブラリはきちんとドキュメントが存在しないと使い物にならん(あれば超便利なんだが) そもそもほぼC++しかやってないのでvarが何なのかよーわからんが。 関数型言語みたいな記述力を求めてんのかね?
224 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 22:39:24.29 ID:37YtuUfA0.net] >>219 templateを使わずに同じ事を実現出来る環境なら、 その時間を新機能追加やバグ取りに使えるって事だよ。 実際、JavaScriptとかはそうなんだよ。 ただし、あっちには別の問題があるのだけどね。
225 名前:デフォルトの名無しさん (ワッチョイ 0b75-7bPG) [2017/04/19(水) 22:50:14.02 ID:q88wQIwA0.net] でたJavascript やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か。
226 名前:デフォルトの名無しさん (ワッチョイ bb1f-ZHy1) mailto:sage [2017/04/19(水) 22:52:18.87 ID:1eYI3Ipd0.net] あーあいつか あの時も意味不明なこといいまくってたな… もうC++は諦めろ
227 名前:デフォルトの名無しさん (ワッチョイ 6b3c-V7Gz) mailto:sage [2017/04/19(水) 22:54:45.80 ID:suSDkWlT0.net] >やっぱりstd::bindは高機能すぎるからオーバーヘッドが有るとか言ってた奴か これがマジなら >ID:37YtuUfA0 マジで実測する癖つけた方がいいよ・・・・・w 速度に関して憶測でモノ言うのは話にならん・・・・
228 名前:デフォルトの名無しさん (ササクッテロレ Sp6f-cQmk) mailto:sage [2017/04/19(水) 22:56:23.35 ID:5KqdfKh3p.net] 常軌を逸してる 触ってしまってすみませんでした
229 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 22:57:53.67 ID:37YtuUfA0.net] >>220 varは何でも突っ込める。(というより型がない) 理論的には、全ての変数を「別々に」テンプレート化しているのと同じ事になる。 だから、理論的にJavaScriptにはテンプレートが必要ない。 (あるけどあれはHTML生成用の別物であって、C++のテンプレートとは違う) 例えば、maxがあったとして、 C++: double max (double x, double y){ return (x>y)? x : y;} JavaScript function max(x,y){ return (x>y)? x : y;} なんだけど、これはC++的には template <typename Tx, typename Ty, typename Tr> Tr max(Tx x, Ty y){ return (x>y)? x : y;} と同じ意味になる。 こんなデタラメで良いのか?と思うけど、 実際、コードの大半はデタラメで良いから、 常に完全フルチューンマニュアル走行のC++はオーバースペックなんだよね。 手抜きで良いところはもっと手抜きしたい。 テンプレートは道路整備に近いから、ライブラリを作っている人はガンガン使うべきだけど、 それぞれの単独アプリで濫用すると空回り感が酷い。 とは言え、それを理由にデタラメにやってきたからいよいよ見にくくなってリファクタしてるんだけど。 ちなみに関数型(キリッの連中は多分勘違いしている。関数型が既述能力が特に高いわけではない。 というか、C++で出来ない既述は基本的にないと思う。 ただし、書きやすいかと言われれば、全く酷いけど、C++のコミュニティってかなり厨二で、 そういうのもC++の魅力だ!と言いきっている感がある。 いや勘弁してください、ってことで。
230 名前:デフォルトの名無しさん (ワッチョイ 6bc8-HE/W) mailto:sage [2017/04/19(水) 23:05:48.45 ID:37YtuUfA0.net] >>224 コンパイラが最適化してくれるからいい、のではなくて、 コンパイラが最適化しなくても速いコードを最初から書こうとしているって事だよ。 ただしC++ではそれが出来ないが、 そもそもコンパイラが最適化してくれるから問題ないってノリでしょ。 ここら辺はスタイルの違いだと思うよ。
231 名前:デフォルトの名無しさん (ワッチョイ 0b75-7bPG) [2017/04/19(水) 23:07:23.43 ID:q88wQIwA0.net] >>224 俺も憶測で決めつけてるけどね。 でもこの書きっぷりと応用性のなさ。Javascriptときたからもうあいつにしか見えない。
232 名前:デフォルトの名無しさん (ワッチョイ eb7a-3MbB) mailto:sage [2017/04/19(水) 23:11:15.73 ID:cDK+jlin0.net] 何故気に入らないのにC++を使おうとするんだ RustとかSwiftのような新しい言語の方がきれいに安全に書けるぞ
233 名前:デフォルトの名無しさん (ワンミングク MM3f-ZHy1) mailto:sage [2017/04/19(水) 23:12:32.75 ID:9cOcPQsOM.net] template <typename T> T max(T a, T b) { return x > y ? x : y; } だろ?馬鹿? しかもjavascriptのvariant型なんてc++でいうとこのvoid*型だろ? 使うたびに内部ではdowncastしてるはずなのにそのオーバーヘッドコストは気にならないのか?
234 名前:デフォルトの名無しさん (ワッチョイ bb1f-ZHy1) mailto:sage [2017/04/19(水) 23:14:03.78 ID:1eYI3Ipd0.net] >>229 RustもSwiftも強い静的型付けだから、型システムがわかってないこいつにはC++同様使えない
235 名前:デフォルトの名無しさん (ワッチョイ efa6-HE/W) mailto:sage [2017/04/19(水) 23:28:44.31 ID:1gRwKhTB0.net] テンプレートだと指が勝手にユニバーサル参照にしてしまう
236 名前:デフォルトの名無しさん (オッペケ Sr6f-xkGs) mailto:sage [2017/04/19(水) 23:53:27.98 ID:5Pu3YB5qr.net] >>219 >現行C++にattributeなんてねーよ 何故か規格を読まない奴ほど自信満々に嘘をつく法則
237 名前:デフォルトの名無しさん (オッペケ Sr23-bEgw) mailto:sage [2017/04/20(木) 00:12:38.85 ID:tHs+CIU3r.net] >template <typename T> T max(T a, T b) { return x > y ? x : y; } >だろ?馬鹿? >>226 の説明が理解できなかった自分の方が馬鹿だった という事実に230が気付くことは無いだろう
238 名前:デフォルトの名無しさん (ワントンキン MMfa-kezb) mailto:sage [2017/04/20(木) 00:17:15.41 ID:4toBdd3vM.net] いやお前だよ…
239 名前:デフォルトの名無しさん (ワッチョイ 1f8f-AhUp) [2017/04/20(木) 05:55:38.33 ID:dzDslOc/0.net] js訛りのC++か 気がつくとぼっちだぜ んなキモいことしてっと
240 名前:デフォルトの名無しさん (ワッチョイ 871f-HDOw) mailto:sage [2017/04/20(木) 06:46:57.40 ID:4gdppVlz0.net] そういやC++のきれいなコードあんまり見たことない
241 名前:デフォルトの名無しさん (スップ Sd4a-Vs57) mailto:sage [2017/04/20(木) 12:06:51.73 ID:nHxDShTLd.net] 俺のコードはスカスカで綺麗だぜ!
242 名前: ̄ ̄\| ̄ ̄ ̄ ̄ ̄ ̄ ̄ (ワッチョイ 8acc-C5/3) mailto:sage [2017/04/20(木) 16:31:13.15 ID:dSLwtaqZ0.net] ,,-―--、 |:::::::::::::;;;ノ |::::::::::( 」 ノノノ ヽ_l ,,-┴―┴- 、 ∩_ /,|┌-[]─┐| \ ( ノ / ヽ| | バ | '、/\ / / / `./| | カ | |\ / \ ヽ| lゝ | | \__/ \ |  ̄ ̄ ̄ | ⊂|______| |l_l i l_l | | ┬ |
243 名前:デフォルトの名無しさん (ワッチョイ de92-UbXF) mailto:sage [2017/04/20(木) 16:39:26.78 ID:pGeg/NAi0.net] 俺のコードにはファウンデーションを丹念に塗ってある
244 名前:デフォルトの名無しさん (オッペケ Sr23-bEgw) mailto:sage [2017/04/20(木) 21:34:46.16 ID:iTkbXITvr.net] >>232 ユニバーサル参照にするとどういう制限が発生するのか分かった上でやっているのか?
245 名前:デフォルトの名無しさん (ワッチョイ 87f4-bQlo) mailto:sage [2017/04/20(木) 21:45:04.01 ID:OBF/5/VT0.net] >>240 MFCとか綺麗だよねw
246 名前:デフォルトの名無しさん (ワッチョイ 06a6-HDOw) mailto:sage [2017/04/20(木) 22:40:39.82 ID:16AwdhdC0.net] >>241 はて?制限・・・そんなのあったっけ? (あわててEMC++をめくりながら)
247 名前:デフォルトの名無しさん (オッペケ Sr23-bEgw) mailto:sage [2017/04/21(金) 14:01:58.43 ID:jq02h6/Cr.net] 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
248 名前:デフォルトの名無しさん (ワッチョイ a375-OSeR) [2017/04/21(金) 14:33:26.68 ID:SD7KIjS10.net] >>244 それ -std=c++1z で通るのな。規格変わったん?
249 名前:デフォルトの名無しさん (オッペケ Sr23-bEgw) mailto:sage [2017/04/21(金) 14:40:59.59 ID:jq02h6/Cr.net] >>245 変わる予定 流石にC++14の言語仕様はクソだった N4659 D.1山椒
250 名前:デフォルトの名無しさん (オッペケ Sr23-bEgw) mailto:sage [2017/04/21(金) 14:43:15.61 ID:jq02h6/Cr.net] だがこれはC++17でも通らない struct A { int b : 2; }; f_pass_by_ref( A{}.b );
251 名前:デフォルトの名無しさん (スップ Sd4a-Vs57) mailto:sage [2017/04/21(金) 14:47:58.15 ID:uAFMuOM4d.net] クソザコなので日常的には何も気付かない
252 名前:デフォルトの名無しさん (ワッチョイ 0b59-C4NQ) mailto:sage [2017/04/23(日) 11:36:55.65 ID:onWybp6E0.net] 質問 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) その他 みたいな?
253 名前:デフォルトの名無しさん (ワッチョイ 0b59-C4NQ) mailto:sage [2017/04/23(日) 11:40:30.73 ID:onWybp6E0.net] 補足>>249 の >ブツの個数を格納したい というのは、keyの出現も個数もわからない状態から、key出現毎に数えていきたいという意味です
254 名前:デフォルトの名無しさん (ワッチョイ 2756-2VNN) [2017/04/23(日) 11:58:50.37 ID:VmCxZvh+0.net] std::map::size で取得
255 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 12:31:44.54 ID:XHzgUmp00.net] >>249 ++dic[key];
256 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 13:01:20.45 ID:E5WPNsUIr.net] 質問者の日本語がクソだと251のようなレスがついてしまっても仕方ない
257 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 13:59:45.57 ID:onWybp6E0.net] >>252 ゆ、許された…!
258 名前:デフォルトの名無しさん [2017/04/23(日) 21:33:17.66 ID:+WngXvwH0.net] よくわかんないけどmax_elementでゲッツした数字をインクレメントしてそいつをキーにすればいいなじゃないか?
259 名前:デフォルトの名無しさん mailto:sage [2017/04/23(日) 22:33:59.07 ID:W0RIoSIf0.net] からのターン
260 名前:デフォルトの名無しさん mailto:age [2017/04/25(火) 01:55:12.08 ID:2owVuizj0.net] fopen()を使う場合は、 shared_ptr<FILE> fp( fopen( "ファイルパス", "r" ), fclose ); と書けるんですが、 fopen_sのように、戻り値でFILE*を取得できない場合は、shared_ptrにできないんでしょうか?
261 名前:デフォルトの名無しさん [2017/04/25(火) 02:09:15.69 ID:L5bW9/iP0.net] ステップ1:shared_ptr<FILE> fp( [] { FILE* fp; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() ); ステップ2:おわり マックはかんたんなんだ。
262 名前:257 mailto:sage [2017/04/25(火) 07:41:45.06 ID:2owVuizj0.net] >>258 おおお、なるほど!ラムダ式が使えるんですね! おかげさまでうまくいきました! この方法なら、shared_ptr化できる対象がさらに増やせますね。 どうもありがとうございました! [] [ここ壊れてます]
264 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 08:33:19.57 ID:OEZA+HZE0.net] クラス化したほうがいいよ
265 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 09:08:54.62 ID:qHdDYIsy0.net] >>258 最初にNULL入れておかんと未定義になるかもでよ
266 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 14:04:32.36 ID:o5+7I7e76.net] 超初心者です。 Ptr<Hoge> abc::createHoge() abc::Hoge::do() すると、 静的でないメンバー参照は特定のオブジェクトを基準とする相対参照である必要があります と言われました。 Hogeのdoを使うにはどうすればいいですか?
267 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 14:18:34.30 ID:P05pQrZGM.net] >>262 Ptr<Hoge> p = abc::createHoge(); p->do(); あとは初心者スレに行くべし
268 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 14:28:56.92 ID:o5+7I7e76.net] できました!ありがとうございます
269 名前:デフォルトの名無しさん [2017/04/25(火) 14:33:18.17 ID:Z7zV+yycd.net] いえいえどういたしまして
270 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 22:33:09.32 ID:ggixqTU6r.net] >>261 他人をおとしいれるのがそんな楽しいのか?
271 名前:デフォルトの名無しさん [2017/04/25(火) 23:25:19.17 ID:xMNxUhiOM.net] >>266 そんな事で陥れられるの?生きていくの大変そうだね。
272 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 23:34:24.96 ID:9Zr4ftW/0.net] >>266 単なる勘違いとか無知とかかもしれないのに、なんでそんなに悪意に満ちた解釈をするのだろう。 それに、その書き込みで誰かが陥れられるというなら、攻撃するより先にその誰かを助けてあげる書き込みをする方がいいんでないか?
273 名前:デフォルトの名無しさん mailto:sage [2017/04/25(火) 23:34:51.11 ID:oTWBT7hM0.net] std::shared_ptr<T>::get()
274 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 00:03:07.94 ID:/Py/BDPD0.net] ステップ1:shared_ptr<FILE> fp( [] { FILE* fp=0←ココ; fopen_s( &fp, "ファイルパス", "r" ); return fp; }(), fclose() ); ステップ2:おわり
275 名前:デフォルトの名無しさん [2017/04/26(水) 01:30:30.17 ID:zA6HVqFs0.net] 止めて!私のことで争わないで
276 名前:ich1 [2017/04/26(水) 07:22:16.30 ID:KcpaNie5a.net] https://goo.gl/Y4tSAe これは嘘でしょ? 本当なら落ち込むわ。。
277 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 08:02:32.64 ID:jkGhVm4nr.net] >>268 >助けてあげる書き込みをする方がいいんでないか? >>261 さえ無ければ質問者は幸せになれるのだから、質問者がリファレンスを見直せば一瞬でわかるような内容は 「アホに惑わされず一読したままの解釈で正しい」ことだけフォローすれば十分ではないか
278 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 17:54:18.88 ID:BTdjOnYo0.net] andriasang.com/com8ig/mt_framework/images/21dxs/full.jpg game.watch.impress.co.jp/img/gmw/docs/608/483/pan_02.jpg game.watch.impress.co.jp/img/gmw/docs/608/483/pan_03.jpg こういうGUIって、どうやって作るんでしょうか? Win32APIで頑張れば作れるんでしょうか? それとも、ライブラリが売られたりしているんでしょうか??
279 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 18:00:10.68 ID:/Py/BDPD0.net] TVTestのソースが参考になる
280 名前:デフォルトの名無しさん mailto:sage [2017/04/26(水) 20:24:27.91 ID:5Saru3KQ0.net] もちろん作れる 自分でレンダリングしなきゃいけないしテクスチャも描かないといけないけど
281 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 01:35:45.00 ID:0T/EiQwUp.net] こういうの作るならQtとか使いたくなる
282 名前:デフォルトの名無しさん [2017/04/28(金) 09:33:31.10 ID:UVvcEOOo0.net] >>273 質問者がリファレンスを見直せば一瞬でわかるような内容なら別にフォローの必要もないだろ。 調べないような奴なら安全な方に倒れていた方が良い。無駄でもたいしたコストではない。 よって >>261 のせいで質問者が不幸せになるという根拠が無い
283 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 09:48:07.09 ID:mPeDNIgc0.net] 横だけど >>274 のGUIって Qt? GTK+? Linuxに引っ越ししようと思っているんだが、GUIツールにどれを選択しようか悩み中。 昨今のマイクロソフトはファック過ぎる、二度と使う事は無いと思っていたC++に戻る事になりそうだ。
284 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 12:15:44.81 ID:4D2iUcPod.net] こういうGUIって、C#で簡単に組めたりするのかな?
285 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 12:46:51.26 ID:mPeDNIgc0.net] >>280 こういうデザインにしたいと思うなら困難だと思う 結構オリジナリティーあるパーツだし
286 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 15:07:30.49 ID:MOddalxma.net] >>274 画像をWindowとして表示するって裏技がWin32であったな。 懐かしい。。。 Vista以前のデスクトップアクセサリとかは、そう言う類の裏技で作られてた。
287 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 18:26:35.16 ID:swDsSHUMr.net] >>278 一瞬でわかるはずの内容でも堂々と嘘を吹き込まれると不安になるだろうから安心を与えることには意味がある と言ったつもりだったけれど日本語は苦手だった?
288 名前:デフォルトの名無しさん [2017/04/28(金) 22:50:15.26 ID:UVvcEOOo0.net] >>283 アレが堂々と嘘ついてるように読めるなら、お前の日本語と俺の日本語違うんだろうね。
289 名前:デフォルトの名無しさん mailto:sage [2017/04/28(金) 23:01:16.62 ID:roW/lMqL0.net] >>283 コイツ多分学会信者
290 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 02:12:01.00 ID:XzsrE9yB0.net] >>279 コンシューマ向けのゲームエンジンだし自前なんじゃ?
291 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 09:23:14.57 ID:nyANDfpKa.net] 学会? 創価の方も、大学的なのも縁が無いが。。。
292 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 22:43:17.83 ID:QeCXmDWM0.net] ヘッダファイルを作らずに他ファイルからの利用は前方宣言だけですますのって作法的に問題はない?
293 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 22:55:12.24 ID:3c3Uk9T30.net] 関数だったら数による
294 名前:デフォルトの名無しさん [2017/04/29(土) 23:03:29.29 ID:S/2IADGO0.net] >>288 その前方宣言をヘッダファイルに書いといて欲しいな。
295 名前:デフォルトの名無しさん [2017/04/29(土) 23:08:33.30 ID:hqOpRyPj0.net] そいつが実装の内部で利用するもので参照先が1ファイルぐらいだったら別にいいんじゃないかな 複数あったら流石にヘッダに書いた方がいいよ
296 名前:デフォルトの名無しさん [2017/04/29(土) 23:15:36.74 ID:xdExBL2r0.net] 引数とか変えたときリンク時(extern ”C”だったら実行時)までエラーが解らないのめんどくさくない?
297 名前:デフォルトの名無しさん mailto:sage [2017/04/29(土) 23:16:41.78 ID:Ng1HwepU0.net] でもメンテ時に混乱しそう
298 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 08:25:35.26 ID:wQZYXO/b0.net] >>292 > (extern ”C”だったら実行時) 知らん 何の処理系?
299 名前:274 mailto:sage [2017/04/30(日) 09:35:48.73 ID:DBp9z9wf0.net] みなさん、ご回答ありがとうございました。 GUIライブラリって調べてみたら山ほどあるんですね。 >>274 のツールもGUIライブラリを使ったのかもしれませんね。 まぁ、カプコンならゼロから作っている可能性もあるかもしれませんがw 調べてGUIライブラリの中ではimguiが最も便利そうだったので、 使ってみることにします。 ありがとうございました。
300 名前:デフォルトの名無しさん [2017/04/30(日) 12:29:31.69 ID:kmaYjpOe0.net] >>294 引数とか変えたときって言ってるじゃん? extern ”C”で引数変えた時にシンボル変えるような処理系の方が知らんわ
301 名前:デフォルトの名無しさん [2017/04/30(日) 12:42:40.89 ID:kmaYjpOe0.net] 返り値の型を変えたときもそうだけど、変更したとき未定義動作になりやすいからヘッダファイルは作った方が良いよ
302 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 14:56:05.47 ID:Lu1XcywOr.net] 『extern ”C”だったら実行時)までエラーが解らない』 どうしてこう他人を陥れたがるのか不思議で仕方ない
303 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 15:34:31.43 ID:6FmE5H1T0.net] >>266 や>>298 の言う「陥れる」の意味がさっぱりわからんのだけど、だれか解説してもらえないだろうか?
304 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 18:30:55.32 ID:iF9ITzdSp.net] ぼくの考えとちがう って意味だよ
305 名前:デフォルトの名無しさん mailto:sage [2017/04/30(日) 19:24:02.13 ID:SNt5gcRU0.net] >>295 >>274 のカプコンのがどうなのかは知らんけど、中小のゲーム会社でも自前で作ってるのを見たことある コンシューマの経験はほとんど無いんでわからんけど、実際の環境での表示と調整を、「どっちも」実機でやらないと話にならんからだろうね Windows上のゲームとかだと実機も開発もWindowsで済むから、Direct3D上でUIまで作る必要ないけど。
306 名前:デフォルトの名無しさん mailto:sage [2017/05/01(月) 17:50:14.23 ID:JVOYymf/d.net] >>300 そういう意味だったのか。
307 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 00:04:07.99 ID:yi3RDMFU0.net] 皆さんカバレッジってどうやって計測してますか? 環境がLinuxなのでgcov+lcov使って見てるんですが、Branch Coverageを見ると大半の行(分岐のない行を含む)で分岐通ってないって計測結果が出てきて使い物にならず困ってます
308 名前:デフォルトの名無しさん [2017/05/03(水) 00:19:05.08 ID:jU3FK0a/0.net] >>303 実際通ってないんでしょ 例えばtemplateのコードだと見た目は分岐になっていなくても型で分岐になってるからね?
309 名前:274 mailto:sage [2017/05/03(水) 00:41:17.84 ID:uzk5Z1ua0.net] >>301 ありがとうございます。 ゲーム開発はたいへんですね・・・。 Windows開発でOKな自分は恵まれてるなぁw
310 名前:デフォルトの名無しさん mailto:sage [2017/05/03(水) 01:39:50.15 ID:yi3RDMFU0.net] >>304 じっくり見てみるとSTL使ってる所が軒並みBranch Coverage未達になってるようなので、インラインで展開されたSTLの中に"型で分岐"してるって箇所があると未達扱いになってるんですかね どっちにしても使い物にならないと思うんですが、何か設定見逃してるのかなあ