[過去ログ] C++相談室 part130 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(2): 転載ダメ©2ch.net (ワッチョイ f37a-QmV0) 2017/03/31(金)08:47 ID:UkLjKqcm0(1) AAS
次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512

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

前スレ
C++相談室 part129
2chスレ:tech

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
省7
2: (ワッチョイ bf54-lR6P) 2017/03/31(金)16:52 ID:CoeIAoH10(1) AAS
STLつかうと一気に実行ファイルサイズが10倍に?!

環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない

すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。

C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?

#include <stdafx.h>
後死ね。
省4
3
(2): (ワッチョイ 3f78-QHHb) 2017/03/31(金)17:03 ID:qlAKv2q70(1) AAS
>>1
4: (ワッチョイ ef14-oQcP) 2017/04/01(土)09:35 ID:JSPgwSTt0(1/2) AAS
テンプレートで曖昧なものは強制的に解決させる方法ってあります?
template<typename A, typename B> void func(A a, B b);
func(2.f,3.f); // float
func(2.,3.); // double
func(2.f,3.);// floatで呼び出したい
5: (オッペケ Sr17-bOuD) 2017/04/01(土)10:06 ID:vvD/Bq3hr(1/2) AAS
こういう質問を見ると
何処に落とし穴が有るのだろうと勘ぐってしまう
6: (ワッチョイ d3a6-agmj) 2017/04/01(土)10:15 ID:vxnrpS460(1) AAS
「強制的に」の解釈だろうね
7
(1): (ワッチョイ cf29-MCV6) 2017/04/01(土)10:21 ID:8wn5/JcH0(1) AAS
func<float, float>(2.f, 3.);
8
(1): 今日は何の日? (ワッチョイ bf7a-mgDT) 2017/04/01(土)11:36 ID:3A8hlFXh0(1) AAS
'f' 一文字で済む方法が2行上に示されているが…

func(2.f,(float)3.); // てへっ

出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
スペシャライゼーションか非テンプレート版でイグザクトマッチを
用意すればいいじゃないかな

func(2.,3.f); の時は float 優先なのか第一引数優先なのか
ロジックによっては元の設計を見直すべきかも
9: (ワッチョイ ef14-oQcP) 2017/04/01(土)11:43 ID:JSPgwSTt0(2/2) AAS
>>8
>出題の意図は func(2.f,3.); には手を加えないでということかにゃ?
そういうことです
static_castが可能な型同士に限定されるとは思いますが

>スペシャライゼーションか非テンプレート版でイグザクトマッチ
なるほど

なおfunc(2.,3.f)でもfloatですね
10: (ワッチョイ a356-8BmZ) 2017/04/01(土)11:59 ID:gOIdtRSt0(1) AAS
お前にテンプレートはまだはやい
11: (オッペケ Sr17-bOuD) 2017/04/01(土)12:50 ID:vvD/Bq3hr(2/2) AAS
>スペシャライゼーションか

実用性皆無の糞コードしか想像出来ない
12: (ワッチョイ 3f3b-MCV6) 2017/04/01(土)18:22 ID:2DXDopa10(1) AAS
そもそも糞コードしか書けない人は何に対してもそうだろ
13: (ワッチョイ f37a-QmV0) 2017/04/01(土)19:25 ID:Pijd2zbh0(1/2) AAS
練習しなきゃ良いコードは書けるようにならない
14
(1): (オッペケ Sr17-bOuD) 2017/04/01(土)19:35 ID:iUvRbgEsr(1) AAS
そうだな
ただ練習したら必ず良いコードが書ける訳でもない
例えばPODをコピーするのにpragma pack1してmemcpyし始めるK&Rおじさんとか
15: (ワッチョイ f359-HQfx) 2017/04/01(土)19:38 ID:p1TV7r2C0(1) AAS
個人的には関数引数の弱い型への変換という
C++言語規約上の暗黙的変換とは逆の流れを引き起こすような記述を
通常と同じような見かけの記述にすることは紛らわしいと希ガス

コード共通化を重視するなら>>7に従うか、あるいはfunc(2.f, 3.f)にするとかして呼び出し元で型を明示し、
そうではなくて弱い型への暗黙的変換を伴うバージョンのfunc()が他とは別のコードになる(スペシャライゼーション対象足りえる
なら、スペシャライゼーションの代わりにfuncを別名にするとかとにかく一目でわかるようにするのが実用的
かと、
16: (ワッチョイ f37a-QmV0) 2017/04/01(土)21:58 ID:Pijd2zbh0(2/2) AAS
>>14
練習とは既にあるより良い方法を真似することだから身につかないのは練習になっていないかやる気が無いかだ
17
(1): (ワッチョイ 3f6f-MCV6) 2017/04/02(日)07:31 ID:NX0JHgEX0(1) AAS
誰か15を日本語訳してくれ
18
(1): (オッペケ Sr17-bOuD) 2017/04/02(日)07:42 ID:0DgUIb4er(1/2) AAS
>>17
・func(0.0f, 0.0)は一見精度落ちない様に見えるがfloatに落ちるのが嫌
・だからfnuc<float>の様な明示的な呼び出しにするか、fnuc_fの様な名前で工夫すべき
・template<> func<double,float>なんて特殊化する暇があったら
 非テンプレートのfuncf作れ
・つまりfloat v;「v=0.0;」もコンパイラーの警告だけなのでNG
・もう変数名はシステムハンガリアンしか無いぜ
19: (オッペケ Sr17-bOuD) 2017/04/02(日)08:00 ID:0DgUIb4er(2/2) AAS
型変換に於ける定数のルールはC++11で見直されたので
「v=0.0;」は例が良くなかったな。まあいいか
20: (ワッチョイ f359-HQfx) 2017/04/02(日)08:01 ID:M04XElTC0(1) AAS
>>18
最後の二つはイラン
やっても良いが第1項目の対策としては過剰すぐる、
21: (ワッチョイ bf6b-agmj) 2017/04/02(日)11:47 ID:XLcHLDuG0(1) AAS
計算がメインの、建築用CADとか、航空流体力学のちょっとしたソフトとかだと、過剰ではないかもしれない

doubleとfloatとでの四つの組み合わせがちょくちょく登場する計算、
funcのfloatとdoubleの組み合わせで厳密に誤差計算しているような気がする
もしもそうだとすると単精度の誤差すらも気にするようなヤバいシステムがコードの背後に見える
……トカマク式核融合炉の制御ソフトの一部かもな
22: (スッップ Sddf-M0et) 2017/04/03(月)21:44 ID:muLND53td(1/2) AAS
AD変換器なんてノイズ多い環境じゃ16bit以上のものなんて使えないぞ
電力関係なら12bit位だろ

いかにその分解能でしっかり制御するかが重要で
算数的な精度なんてどーでもいいのさ
23: (ワッチョイ b310-MCV6) 2017/04/03(月)21:49 ID:iUZo1Vn10(1/2) AAS
最後の1行を除き同意
24: (スッップ Sddf-M0et) 2017/04/03(月)22:07 ID:muLND53td(2/2) AAS
偉い人向けに表示上だけは電卓に合わせないとうるさいって話かな
25: (ワッチョイ f37a-QmV0) 2017/04/03(月)22:36 ID:rMPFCCT20(1) AAS
電池とかのラインで使われてる計測器だと有効なのは小数点以下は3桁くらいまでかな
26: (ワッチョイ b310-MCV6) 2017/04/03(月)22:41 ID:iUZo1Vn10(2/2) AAS
最小目盛りの10分の1
27
(1): (ワッチョイ ef14-oQcP) 2017/04/03(月)22:48 ID:teq5sGj/0(1/3) AAS
数学的なベクトルのクラスで
template<int N> vec{ double v[N];};
などとした場合、コンストラクタで各成分を指定したいようなときって
どうするのが筋ですかね?
それとも引数の数が変わるのがわかってるようなケースはテンプレートすべきではない?
28: (オッペケ Sr17-bOuD) 2017/04/03(月)22:59 ID:/XngI6+6r(1) AAS
こういういかにもな質問を見ると、
何処に落とし穴が有るのだろうと勘ぐってしまう
29: (ワッチョイ bf80-QHHb) 2017/04/03(月)23:08 ID:BzAHvGte0(1) AAS
>>27
俺は配列で初期化して渡してる。
一瞬本末転倒な気もするが、これが一番スッキリする。
30
(1): (ワッチョイ ef14-oQcP) 2017/04/03(月)23:15 ID:teq5sGj/0(2/3) AAS
double d[]={0.,1.,2.};
vec v(d);
みたいなことですかね?
あと今思いついたのは共通に処理できるところだけ
template<int N> struct vec_base{double v[N];}
template<int N> struct vec {};
template<>strct vec<3> : public vec_base<3>{ vec(double, double, double);};
みたいな
31: (ワッチョイ bfcd-jsM4) 2017/04/03(月)23:18 ID:xWKBtMgw0(1) AAS
可変長テンプレートじゃだめなの
32: (ワッチョイ ef14-oQcP) 2017/04/03(月)23:38 ID:teq5sGj/0(3/3) AAS
そんなのありましたね・・・
調べてみます
33: (ワッチョイ bfcc-hXdu) 2017/04/04(火)02:27 ID:cqsAbaT40(1) AAS
template<int... args>
34: (ワッチョイ 733c-kVPK) 2017/04/04(火)12:47 ID:CFV3B2Uw0(1) AAS
Nは要素数だからそれじゃダメやろ
35: (スッップ Sddf-mnw5) 2017/04/04(火)13:09 ID:6xG2515ud(1) AAS
template <typename... T> は機能するけどこの場合ちょっとやだな
36: (ワッチョイ 3f91-MCV6) 2017/04/04(火)15:20 ID:SRqXkALx0(1) AAS
sizeof... の使いどころじゃね?
37: (オッペケ Sr17-bOuD) 2017/04/04(火)17:42 ID:Xbh3DIbfr(1/2) AAS
質問者がコンストラクターを使用したいと言っている以上
残念なコードになることは不可避
static_assertでも入れとくしかない
38: (オッペケ Sr17-bOuD) 2017/04/04(火)20:17 ID:Xbh3DIbfr(2/2) AAS
ネタも投下されないようなので取り敢えず貼っとくか
外部リンク:ideone.com
39: (ワッチョイ bf80-QHHb) 2017/04/04(火)20:55 ID:vk9hQqDM0(1) AAS
>>30
まさにそれ。
イロイロ思考した末にそこに辿り着いた。
C++11以降なら初期化リストやstd::arrayが使えるんだけどね…
40
(1): (ワッチョイ cf59-dxaC) 2017/04/06(木)07:41 ID:aL+qmOiO0(1) AAS
質問ですが、bool型の変数x値(true/false)をint型の1/0に変換する場合、
(int)xで正しいの?それとも演算子を使ってx!=falseとか!!xとすべき?
あるいは
 int y; if(x) { y = 1; } else { y = 0; }
式にやらなきゃダメ?

そもそもC++においても「!」、「!=」、「==」(オーバーロードされていないやつ)はintを返すんやろうか…
41: (ワッチョイ be14-4Usw) 2017/04/06(木)07:49 ID:XYhavOUb0(1) AAS
x?1:0
42
(2): (ワッチョイ f3b4-GJ90) 2017/04/06(木)08:13 ID:WJuxfIBi0(1) AAS
N4660の
7.6p6
8.3.1p9
8.10p1
あたりを読んでから質問するという発送は無いものか
43: (ワッチョイ 7f93-+TA9) 2017/04/06(木)08:18 ID:3pIc1pJU0(1/3) AAS
>>40
std::cout << typeid(!0).name();
こんくらいやってみた?
44: (オッペケ Sr57-GJ90) 2017/04/06(木)08:36 ID:8pWbCGLcr(1) AAS
一般人はtypeidを知らない可能性があるが
auto x = (0 == 0);
と書いてxの上にマウスカーソルを持って行く知能は欲しいところ
45: (ワッチョイ 7f93-+TA9) 2017/04/06(木)08:49 ID:3pIc1pJU0(2/3) AAS
一般人てコンパイラって何?な人?
46: (オッペケ Sr57-GJ90) 2017/04/06(木)10:25 ID:zY+rYc0kr(1/2) AAS
企業に勤めていて日常的にC++言語を使うような人、かな
47: (ワッチョイ 7f93-+TA9) 2017/04/06(木)11:12 ID:3pIc1pJU0(3/3) AAS
日常的にC++使っててtypeid知らないなんて死刑だろ
48: (スッップ Sd92-dvjh) 2017/04/06(木)11:30 ID:b6mS5n8zd(1/2) AAS
知っていても使わないなあ
試しに実験したことはあるかも
49: (スッップ Sd92-dvjh) 2017/04/06(木)11:30 ID:b6mS5n8zd(2/2) AAS
C++たまにしか使いません
50
(1): (ワッチョイ fb4a-TXVw) 2017/04/06(木)18:35 ID:H/56SjdK0(1/4) AAS
少し前からDXライブラリの勉強を始めました

「ポンクソフト」というサイトさんの「C/C++言語とDXライブラリでゲーム作成入門」というページを真似ながら勉強しています
そこの「6.オセロの作成」に先程着手したんですが、何度見返しても以下のエラーが出て実行できません

一つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行67
二つ目:コードC3872「'0x200e':この文字を識別子で使用することはできません」行80

解決方を求めて「C3872」「0x200e」などと検索したんですが、解決方を見つけることは叶いませんでした
どなたか私に原因と解決方を教えて下さい
51
(2): 片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd92-+G+c) 2017/04/06(木)18:43 ID:0SmLVS9od(1) AAS
>>50
全角文字と半角文字の違いに気を付けて。コンピュータは全角と半角を区別する。
52
(2): (ワッチョイ f26b-D6lx) 2017/04/06(木)18:43 ID:oAa8xYYx0(1) AAS
そこのURLを貼ってくれると話はさらに早くなる
1-
あと 950 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.074s