[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 03/03 12:56 / Filesize : 271 KB / Number-of Response : 1015
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++相談室 part130



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の中に"型で分岐"してるって箇所があると未達扱いになってるんですかね
どっちにしても使い物にならないと思うんですが、何か設定見逃してるのかなあ






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<271KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef