[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2ch.scのread.cgiへ]
Update time : 02/19 06:26 / Filesize : 129 KB / Number-of Response : 496
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


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

【初心者歓迎】C/C++室 Ver.97【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 07:10:18.03 ID:47QFVOwL.net]
エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。

◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。

【アップローダー】(質問が長い時はココ使うと便利)
codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)

前スレ
【初心者歓迎】C/C++室 Ver.96【環境依存OK】
peace.2ch.net/test/read.cgi/tech/1433514467/

2 名前:前スレ989 mailto:sage [2015/08/18(火) 08:55:41.03 ID:o7p+NB2T.net]
>>前スレ993
> でも使う側で代入しなきゃいけないってめんどくさくない?
> >>985のほうはfuncAとかを呼び出すようにすれば関数ポインタがどうこうというのは気にせずに使えるし

funcA で代入まで済ませればそこも変わらないと思うんだけど?

3 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 09:25:05.71 ID:+rFwHajx.net]
そもそも面倒臭いかどうかは関係ないんじゃないかな?

4 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 11:25:41.05 ID:YoPJdOWG.net]
関数内部で更新してその値を参照する場合かな

5 名前:デフォルトの名無しさん mailto:sage [2015/08/18(火) 13:50:39.51 ID:PdOCffiM.net]
説明テキトー態度も最悪
ほっとけばいいんじゃない?

6 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 21:33:13.99 ID:OPjxJt6u.net]
codepad.org/Wj5jd0Eo
出力が5にならない理由と5にする方法教えてください

7 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 21:54:44.00 ID:qqtrjDLq.net]
>>6
codepad.org/PNrRY4Li

8 名前:デフォルトの名無しさん mailto:sage [2015/08/20(木) 22:19:41.01 ID:OPjxJt6u.net]
有り難うございます

9 名前:デフォルトの名無しさん mailto:sage [2015/08/24(月) 11:12:55.99 ID:HAmfbFZ3.net]
#include<iostream>
using namespace std;

class A{
public:
int a;
A(int a0){a=a0;}
void inc(){a+=1;}
};

class B{
private:
int n;
public:
B(int n0){n=n0;}
void ainc(A A0){
for(int i=0;i<n;i++){ A0.inc();}
cout<<A0.a<<endl; //わはは Javaな人だとはまりそ?
}
};
int main(){
A A0(3);
B B0(2); B0.ainc(A0);
cout<<A0.a<<endl;
}

10 名前:デフォルトの名無しさん mailto:sage [2015/09/03(木) 23:09:20.83 ID:6bOZtC0j.net]
標準ライブラリの開発コンセプトとか載っている本ってありますか?
以前に見つけた憶えがあるんだけどタイトルを失念してしまったので
何か良い本を紹介して下さい



11 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 14:33:54.91 ID:cJmaZWu4.net]
>>9
5
3
あってる?
いや違うか?
メンバ関数の引数に参照(&)が入ってないから……
ん〜でも……
あぁ〜最近Andoroidアプリでjavaばっかだから
でも、まぁ、そんなコード書くこと無いわな〜

って言っても、Oracle java SE programmer Silver
の試験受けた時、そんなコードばっかだったよ
ちなみに、試験でムカついたのは
int i=0;
while(0<++i)
が、答えが無限ループってところ
javaでunsignedはcharだけだろ
いつかは止まるっつーの

12 名前:デフォルトの名無しさん mailto:sage [2015/09/25(金) 14:53:50.11 ID:cJmaZWu4.net]
>>10
C?それともC++?
って言っても、Cはアセンブリに近い低級言語で
C++は、誰が設計したのか分かんないけど
間口を広げすぎたオブジェクト指向だね〜
Cは置いといて、C++を語ると必ず
オブジェクト指向とはって、色んな例え話が出る

俺の例え話
ブロックくずしのゲームあるよね
で、当てるブロックと跳ね返すボードは
同じ跳ね返すという動作をするので
ボードとブロックは同じ跳ね返す機能のクラスを継承
しかし、ブロックに当てるとアイテムが落ちてきたりする
これはブロック側の独自実装
で、アイテムを取ったらボールが増えたりする
でも、跳ね返すという観点では変わらない

はい、ややこしくなってまいりました。失礼!!

13 名前:ホリエモン×見城徹×酒鬼薔薇 [2015/10/03(土) 23:06:01.08 ID:IwRG46Mp.net]
「生きるのに向いていないから」健康な24歳女性の安楽死が認められる!!=ベルギー

tocana.jp/2015/06/post_6713_entry.html

14 名前:もう俺たちは奴隷じゃない! [2015/10/31(土) 20:09:56.80 ID:xHpU59d3.net]
安楽死旅行企画が大人気|竹田恒泰チャンネル

https://www.youtube.com/watch?v=XmP1TRsAe88

15 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 10:35:53.36 ID:VplAS7nf.net]
シリアル通信を使ってLinuxを操作、表示するアプリを作りたいのですが、
Ctrl+C(中断指示)やCtrl+D(EOF送信)といった特殊な操作は、
何を送れば良いのでしょうか?

また、これらは各OSで共通だったりするのでしょうか?

16 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 10:40:23.64 ID:bkeJBg3D.net]
Ctrl+Space = 0x00, Ctrl+A = 0x01, ...

17 名前:15 mailto:sage [2015/11/03(火) 11:13:47.48 ID:VplAS7nf.net]
>>16
それは私宛てでいいのですよね?
それらの一覧ってないでしょうか?
(もしくはそのコマンド群の名称)

18 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 11:20:30.35 ID:bkeJBg3D.net]
A以降が1ずつ増えることくらい類推しろや

19 名前:デフォルトの名無しさん mailto:sage [2015/11/03(火) 11:23:31.31 ID:bkeJBg3D.net]
www.routrek.co.jp/product/varaterm/controlcode.html

20 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 09:43:28.19 ID:+IbiBxzw.net]
>>17
制御コードと呼ぶことが多い
C言語入門にはちらっと紹介されてると思うが
ちなみに改行・タブ文字も制御コードの一つ



21 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 10:19:46.10 ID:bo5L4q85.net]
Ctrl+Insはの制御コードはなんですか?

22 名前:デフォルトの名無しさん mailto:sage [2015/11/04(水) 13:11:24.50 ID:f7QS+eFK.net]
linux側で受信文字を表示して調べろ

23 名前:デフォルトの名無しさん mailto:sage [2015/11/22(日) 08:25:38.42 ID:qediMbGX.net]
>>15
いいえ、「コード」はともかく「操作」は共通ではありません
例えばWindowsはデータ終了にCtrl+DでなくCtrl+Zを使用します

24 名前:デフォルトの名無しさん [2015/11/28(土) 02:40:50.14 ID:jVemdVDV.net]
質問なのですが,プログラム作成中に
"コンパイラの制限 : プログラム内のブロックの入れ子のレベルが深すぎます。"
というエラーがでてコンパイルできません.
VS2010 c++下では入れ子は128層が限界とあったのですが,この層の数え方は,例えば
for(){if(){if(){if(){}}}}の場合,4層という認識であってるのでしょうか?

25 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 02:47:55.73 ID:JsGV9DmL.net]
>>24
それプラス、if-else ifがたくさん並んでるとそのエラーが出るみたいよ

26 名前:デフォルトの名無しさん [2015/11/28(土) 03:42:43.97 ID:jVemdVDV.net]
>>25
main関数内で,for文等で書かれたブロックが違っていてもif-else ifを多用していると
128層でなくてもこのエラーがでてきてしまうとうことでしょうか?

コードも載せたほうが状況も説明しやすいのですが量が多いので,文章だけになってしまい
すいません.

27 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 08:53:46.29 ID:mxbt4S4C.net]
質問ですが、C++内で永続データ(文字列50文字程度×200万件程度)を扱わなくてはいけなくなったのですが、
とりあえずMySQLに突っ込んだら1週間たってもInsertが終わらないです。
他にC++で大量のデータを保管し、後から簡単に部分一致検索できるような方法はありませんか?

28 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 09:11:25.80 ID:3k32N2dX.net]
「mysql insert 遅い」で検索してそれでも不満なら、また来なさい。

29 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 10:20:47.03 ID:hdYDv4+a.net]
>>24
別のコンパイラも試しなよ

30 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 10:32:03.28 ID:tW/rjk30.net]
>>27
部分一致検索をするには大きく分けて
・検索される側の文字列を変換して検索に特化させる
・検索する側の文字列を変換して検索に特化させる
・検索される側・する側どちらも何ら変換しない
の3通りの方法がある。

最初のはは例えば接尾辞配列を作ってそれを保持するって方法で、
これは検索される側の文字列長をnとした時にO(n log n)償却時間で変換する方法や
O(n log^2 n)最悪時間で変換する方法なんかが知られている。
検索時間は検索する側の文字列の長さに依らずO(log n)平均時間

次のは例えば正規表現を有限状態オートマトンに変換する方法で、
その正規表現の長さをm、検索される側の文字列の長さをnとする時にO(m^3)平均時間、
O(m^2 * 2^m)最悪時間で構築してO(n)時間で検索できる方法が知られている。

データベースに何でもかんでもぶち込むだけが方法じゃない。
データの総量が増えないなら前者の方法で準線形時間掛けて初期化しておけば対数時間で検索できるし、
データが追加されうるならとりあえず何らかのファイルに1行につき1エントリの形式で書き込んでおいて
後者の方法を使えば線形時間で検索できる。
特に、後者の場合は(1行につき1エントリという形式にしておけば)Unixのgrepコマンドが使える。



31 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 10:41:03.68 ID:tW/rjk30.net]
ごめん
> 検索時間は検索する側の文字列の長さに依らずO(log n)平均時間
って書いたけどより正確にはO(m + log n)とかそんな感じ

32 名前:デフォルトの名無しさん mailto:sage [2015/11/28(土) 14:03:22.69 ID:mxbt4S4C.net]
>>30
なるほど。
アリ本読みながら頑張ってみる。
ありがとう。

33 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 11:39:46.44 ID:fhjopYJV.net]
たった200万件が1週間たってもINSERTできないのは
朝マック頼んで番号札もらって席について、閉店まで待ってるようなもの
何かおかしいと思わない人間には無理

34 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 12:36:23.19 ID:4pi0A2Al.net]
>>33
> 1週間たってもINSERTできないのは

ネタだろ、いちいち構うなよ

35 名前:デフォルトの名無しさん [2015/11/29(日) 21:36:36.46 ID:ZUBJcHMd.net]
>>25 >>29
ありがとうございます!
おそらく解決できました.

36 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 22:44:30.05 ID:RglVntwV.net]
>>27
文字列50文字は、100byte程度。
100byte * 200万件 = 200MB

1分以内には書き込める

37 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 22:49:51.69 ID:tNTBXjHt.net]
>>36どうしようもない馬鹿

38 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 23:04:33.40 ID:vKs8E2om.net]
char *argv[]をintに変換したいのですが、どうすればいいですか?

39 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 23:08:40.17 ID:RQ97x6ZU.net]
atoi(argv[1])

40 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 23:10:50.62 ID:vKs8E2om.net]
>>39
ありがとうございます。
検索の方法が悪いのか、リアルで1時間ほど検索しても見つからず
困ってました。



41 名前:デフォルトの名無しさん mailto:sage [2015/11/29(日) 23:40:37.63 ID:zeO3ugsW.net]
>>40
Googleで
c言語 文字列 数値 変換
って検索したら一番上に出たけどなんて検索してたん?

42 名前:デフォルトの名無しさん mailto:sage [2015/11/30(月) 15:03:48.66 ID:jNXFF+da.net]
>>41
"char *argv[]" 変換
等ですね。

43 名前:デフォルトの名無しさん mailto:sage [2015/11/30(月) 15:56:59.92 ID:7BdzR/6V.net]
何に変換するかも書いてないのに出るわけ

44 名前:デフォルトの名無しさん mailto:sage [2015/11/30(月) 16:18:14.72 ID:R91D20Ot.net]
argvが何かが解ってないからそうなるんだろうね

45 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 00:26:49.79 ID:wpzjFC8X.net]
Visual Studio 2015 (Visual C++ 14)

char32_t unko = U'A';
printf("%04X", unko);

warning C4477: 'printf' : format string '%04X' requires an argument of type 'unsigned int',
but variadic argument 1 has type 'char32_t'

なんで?
(キャストしろ、というのは無しでおながいします)

46 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 01:23:52.57 ID:lNfIPK42.net]
>>45
www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4296.pdf
Types char16_t and char32_t denote distinct types with the same size, signedness, and alignment as
uint_least16_t and uint_least32_t, respectively, in <cstdint>, called the underlying types.

つまりchar32_tは同じサイズ・同じ符号の有無でも別の型として見做されてる。

47 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 01:46:15.44 ID:ezzwHQH9.net]
>>45
そのメッセージの何がわからないの?

48 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 04:55:59.58 ID:wpzjFC8X.net]
Warningが出ないようにすにはどうしたらいいのか、聞きたいのです。

たとえば HANDLE なら "%p" で表示できますよね。
HANDLE chnko.;
printf("%p", chnko);
size_t なら "%Iu"

じゃぁ char32_t な変数は、いったいどうやって16進数表示すればいいか知りたいんです。

49 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 04:57:07.63 ID:wpzjFC8X.net]
>>46
市ね

50 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 04:58:58.14 ID:wpzjFC8X.net]
くれぐれも pragma で disable するとか反則技は無しにしてください



51 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 08:05:37.51 ID:eJgp+Ap7.net]
それはエラーではく警告なので既に表示できてる

52 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 08:24:02.11 ID:uoWB06OP.net]
もう付き合う必要ないだろ

53 名前:46 mailto:sage [2015/12/04(金) 08:37:07.91 ID:lNfIPK42.net]
>>49
何故警告が出るか?の問いに正確に答えたのになぜ殺たし

54 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 09:44:49.42 ID:ezzwHQH9.net]
>>48
char32_t に直接対応する書式指定は定義されていない。 C なら int_least32_t の
typedef ってことになってるから PRIdLEAST32 でいけるんだろうけど、エラーメッセージを
見る限りは C++ っぽいな。 C との移植性を考慮してる処理系なら C++ でも
PRIdLEAST32 でいけるかもしれない。

普通に考えれば確実に 32 ビットある unsigned long あたりにキャストして %08lX で表示
すれば移植性含めて確実なんだろうけど、それがダメってことなら・・・
unsigned long x = unko をはさむんならいいの?

%p で HANDLE が表示できるのは、たまたま typedef の定義が void* か、ポインタの
表現形式が同じなだけ。移植性は無い。

size_t のフォーマットは C99 でようやく %zu が定義されてる。 C99 未対応の環境を含めて
移植性を持たせようと思ったら、やっぱりキャストすることになるんだろうな。

55 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 12:41:53.04 ID:eOr3TAvt.net]
>>53
一見すると警告が出ている理由を聞いているように見えるが
事前に回答に対して付けてる注文が、警告されない方法を要求された場合に得られるものに対しての注文になっている点を見逃していたな

56 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 12:58:29.43 ID:GzeAUkqU.net]
printfでsize_tをポータブルに扱うにはzを使う。16進だったら%zx
MSVCではそのままでは使えず、手順を踏めば使えるようになるが、
>>49のようなアホには教えてやらない。
yahoo知恵袋とかに知ってる奴がいるかも知れないからそっちで聞け。二度と来るな。

57 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 13:20:37.25 ID:cTLbcsjq.net]
char32_t を受けるフォーマット文字列が
→ ある
 そのフォーマット指示教えて
→ ない
 キャストしたうえでそれを正しく受けれるフォーマット文字列を当てろ

58 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 13:31:24.33 ID:yphLFvrP.net]
みんな親切だな
こんな無礼な奴に教えてるとか

59 名前:デフォルトの名無しさん mailto:sage [2015/12/04(金) 18:25:08.71 ID:tMlpAt0c.net]
>MSVCではそのままでは使えず

へー、俺はそのまま使えてるけど

60 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 01:25:48.24 ID:XrhXlWwy.net]
>>45
printf の書式に関してはキャストが正しいやり方だと思うけど…



61 名前:デフォルトの名無しさん mailto:sage [2015/12/05(土) 14:44:28.99 ID:8o6AWzwu.net]
そういや
printf("%04x", unsigned(unko))
みたいなキャストの書き方する人をめっきり見かけなくなったな

62 名前:デフォルトの名無しさん mailto:sage [2015/12/06(日) 16:56:31.72 ID:w0JG1OnY.net]
>>61
C++で追加された書き方だっけ。わざわざCと非互換な書き方するのもな

63 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 10:24:26.90 ID:kLiwVdVP.net]
コンストラクタで変換するイメージだから割りと使うなぁ。

64 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 12:35:07.38 ID:EdmvAvM2.net]
普通に使うよね
大体Cスタイルキャストみたいな強いキャストしてほしくないけど
static_castみたいな長ったらしいのは打ちたくない時とか

65 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 12:43:32.10 ID:OioPlMJu.net]
>>64
>>61の危険性はCスタイルキャストと同じだろ。

66 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 12:50:44.53 ID:MCOGyvev.net]
前in64_tとuint64_tを変換しようとして
n = static_cast<unsigned>(m);
って書いて嵌ったなぁ。

unsignedはunsigned intとして評価されて、その環境でのunsigned intが32bitしか無かったのが原因なんだけど。

67 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 13:29:16.51 ID:Hqr6JCCE.net]
intは2〜4バイトだかんね

68 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 14:03:46.21 ID:JxHjK4i3.net]
>>65
61みたいなケースに限った話だったの?

69 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 15:14:45.21 ID:6rSJBSiX.net]
unsigned(i)

(unsigned)i
って、どちらもreinterpret_cast相当で同じなんじゃないの?
危険性も同じでは?
カッコで囲う分、unsigned(i)の方がプログラマのミスを防げそうってのはあるが
(unsigned)(i)って書けば同じことだし

70 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 16:52:08.66 ID:FMrKVVi9.net]
static_castを使わないと駄目なんかなぁ



71 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 20:40:29.05 ID:PFJ6xruc.net]
そもそもキャストなんて限られたところでしか使わないから

>>64
> static_castみたいな長ったらしいのは打ちたくない時とか

みたいな理由はすごく違和感ある
xxx_cast< > の方が grep し易いし

72 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 20:46:33.27 ID:YI9JvcYw.net]
>>69
おまえがreinterpret_castを理解していないことはわかった

73 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 20:59:38.29 ID:vSptre4r.net]
Cスタイルキャストをサーチしてくれるツール知らない?
GCCだとワーニング出せるんだけどVC++にはないんだよなあ

74 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 21:19:35.71 ID:MCOGyvev.net]
>>73
cpplintで出来なかったっけ?

75 名前:デフォルトの名無しさん mailto:sage [2015/12/07(月) 21:39:05.15 ID:vSptre4r.net]
>>74
ありがと
cpplintのソース見るとやってるみたいだね試してみるわ

76 名前:デフォルトの名無しさん [2015/12/07(月) 22:16:48.23 ID:YS1sGdfb.net]
プログラムの経験はあまりないのでなるべく詳しく教えてほしいです

printfによってSegmentation faultが出てしまいました

貰ったプログラムを見ていると関数の初めと終わりにprintf文が書かれてあり、
#ifdef DEBUGで消されてありました。デバッグ用だろうと思いdefine DEBUGを書いて実行したのですが、
あるpthread_createで呼び出された関数を通るとsegmentation faultになってしまいました。。。
調べてみるとどうやらpthread_createで呼び出された関数のprintfが有るか無いかだけでsegmentation faultになるかならないかということが分かりました。

printfがあるかないかのsegmentation faultということが凄く不思議です。
printfが領域を壊しているということでよいのですよね?

ちなみに確か、printf("\tchar xxxxxxxxxxx(www = %d,yyy = %d, zzz = %d); {\n",int www, int yyy、int zzz); とprintf("xxxxxxx end\n")こんな感じでした。


・このpthreadで生まれる関数のprintfの中身をいったん入れるデータ領域などは、pthread_createの時に新たに作られるのでしょうか?
それとも元々のプログラムを実行したときに作られる領域を共有しているのですか?
 ・↑だとしたらpthread_createの時に領域をどれだけ確保しているかとか、わかるのでしょうか?その領域を広げれば解決できるのでしょうか?

・というか、そもそも前提はあっていますか?

・こんな可笑しなエラー、ほかにもありましたら教えてください。

コンパイルはwindows版eclipseのgcc crosscompilerです
実行環境はFreeBSD、ハードウェアのスペックはよくわかりませんが組み込み系です

よろしくお願いします〜!

77 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 00:06:06.37 ID:YwewJazw.net]
>>76
前提が違っている

バグは問題の個所以前に存在する。printfも含むがそことは限らない。

78 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 00:14:31.96 ID:y9imTVGc.net]
#ifあたりで構造が崩れてるとか・・・

79 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 00:47:51.17 ID:EGf1sWrT.net]
printfの有無、最適化オプションで結果が変わる、
なにか変数の初期化忘れを疑う

80 名前:65 mailto:sage [2015/12/08(火) 01:07:46.79 ID:xTQHW/dy.net]
>>68
別に>>61に限ったつもりは無かったけど、あの形のキャストをどう呼ぶかわかんなかったんだ。
規格上はキャスト式のひとつで function notation と言うらしい。

で、>>64が言うには「Cスタイルキャストみたいな強いキャストしてほしくない」ときに
function notation を使うらしいんだけど、単一の式に対する function notation でのキャストの効果は
Cスタイルキャストと同じで依然として「強いキャスト」が実行されてしまうことになるから、
何かおかしなことを言ってると思ってる。

>>69
reinterpret_cast と const_cast の効果が両方発動したりもするよ。

>>73
GCC の -Wold-style-cast だよね。
でもなぜか同じ危険性でも function notation だと検出されないんだ・・・。



81 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 02:03:07.89 ID:R0PV8G/t.net]
>>80
意味解って言ってんのか?
せめて試してから言ってるんだよな?

82 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 02:57:32.43 ID:Uz/uPJvZ.net]
>>69
>>80
static_castが抜けてるよ

83 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 03:02:51.98 ID:R0PV8G/t.net]
> reinterpret_cast と const_cast の効果が両方発動したりもするよ。
試して言ってるならこの例頼むよ。忘れんなよ。

84 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 03:05:30.26 ID:xTQHW/dy.net]
>>81
何を試せって話なのかよくわかんなかったけど、>>83と合わせて、これでいいの?
melpon.org/wandbox/permlink/fktKKlGO95s7IKEx

typedef int* intptr;
intptr x;
void f(double const* p)
{
x = (intptr)p; // ok
x = intptr(p); // ok
x = static_cast<intptr>(p); // error
}

prog.cc: In function 'void f(const double*)':
prog.cc:7:30: error: invalid static_cast from type 'const double*' to type 'intptr {aka int*}'
x = static_cast<intptr>(p); // error

85 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 05:01:43.22 ID:RVFMry3L.net]
>>80
>でもなぜか同じ危険性でも function notation だと検出されないんだ・・・。
これ初めて知ったよ
確かにold-styleじゃないけどさ

86 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 05:23:07.34 ID:RVFMry3L.net]
細かいが初心者スレなので一応訂正しておく
function notationじゃなくてfunctional notationな

87 名前:デフォルトの名無しさん [2015/12/08(火) 08:24:16.94 ID:1IXf9fjC.net]
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーロー、シャーマン・キングなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正。

機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。

下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
wc2014.2ch.net/test/read.cgi/entrance2/1449039272/-18

88 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 10:56:45.80 ID:mthiYc/w.net]
>>80
> function notation だと検出されないんだ・・・
コンパイラに検出してほしいよね
これってlintじゃ検出難しいだろうから
そもそもfunctional notationなんてものが何故導入されたんだ?
こんなもん無い方が良いだろ

89 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 12:12:33.81 ID:xTQHW/dy.net]
>>86
ごめん。流し読みして見落としてた。ありがとう。

>>88
クラス型の一時オブジェクトを作る書式としてはしっくりくるんだけどな。
単一式の場合の特別扱い無しで常に T t(expr...) と同じ動作として定義してくれればよかったのに。
C++98 時点の話だから、たぶんただの設計ミスなんじゃないかと。

90 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 13:14:18.38 ID:9OJSSokt.net]
開発環境 XP SP3 VC++2008EE
Win32 コンソール アプリケーション
MFC=標準Windowsライブラリを使用
ATL=使用しない
文字セット=マルチバイト

実行環境 Windows NT系OS

この環境で以下のような改造したファイルオープンダイアログを
実装しようと思ってるのですが、
i.imgur.com/lgk1ApU.jpg

どのようにしたらいいのでしょうか?
検索してもうまく探せませんでした。



91 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 15:25:04.26 ID:lAFQRlE9.net]
ファイルダイアログのカスタマイズでググれ
でもEEなら MFC/ATL もリソースエディタもなしでキツイんじゃないか

あと誘導
peace.2ch.net/test/read.cgi/tech/1438695290/l50

92 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 16:27:08.06 ID:zjJIjn6V.net]
ところで結局
(unsigned)(i)

unsigned(i)
は何が違うの?
危険度は同じでは?

93 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 19:25:14.13 ID:kigfa6aB.net]
俺C++知らんのだけど、unsigned char にしたいときはどうするの?

94 名前:デフォルトの名無しさん mailto:sage [2015/12/08(火) 19:56:36.38 ID:9OJSSokt.net]
>>91
ありがとうございます。

95 名前:デフォルトの名無しさん mailto:sage [2015/12/11(金) 08:07:52.26 ID:YV4fREMK.net]
using baka = unsigned char;
baka(v)

96 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 11:02:24.16 ID:J0zYjx2j.net]
設定ファイル上のIDとコード上のIDをうまく記述する方法ありますでしょうか

xxx.iniファイルに"HOGE=100"とあり、コード上にenum ID { HOGE };として
mapでid[ HOGE ] = (ここにiniファイルのHOGEの中身 )と記述してるのですが

iniファイル、コード上で2重に書くのがなんか変な感じがしまして
なにか別の方法があればとおもいまして

97 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 11:08:14.60 ID:e2VDlW7v.net]
設定ファイルを実行時に読みとる

98 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 11:25:49.88 ID:7G0ybzbE.net]
enumの具体的な値に影響するようなコードを書いちゃだめ

99 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 11:29:38.04 ID:msfZv23a.net]
書いてることがよくわからんな。
コードに同じ内容を書いているんなら、そのiniファイルは何のために存在しているの?

100 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 11:41:35.92 ID:fT/m1Hfb.net]
>>99
俺もよくわからんが
低脳にレスしてもらいたくないから、低脳にはかいていることが理解できないようにしている
ってことだけは分かる



101 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 12:31:39.74 ID:/H210tb+.net]
ハッシュにすれば

102 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 12:55:59.15 ID:Gz2IfgKr.net]
enum使うの諦めて、文字列で指定するようにして
id["キー"]=値ってやればいいんじゃ

iniファイルはキーの取得もできたはず、少し面倒だけど

103 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 13:12:36.30 ID:6mDCyx9e.net]
C#だと文字列をenum値に変換できるんだけどな
C/C++じゃうまい方法がないね

104 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 14:17:52.83 ID:Tlws6VKy.net]
>>96
enum と ID との結びつきを配列やテーブルで持つのはどうですか?

105 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 14:34:08.98 ID:zzgKuIEv.net]
iniファイル読んで
id[ HOGE ] = ....
を生成するスクリプト書く

106 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 14:41:14.90 ID:/H210tb+.net]
>>105
iniファイルいじっただけでコンパイルし直しかよ

107 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 14:47:10.22 ID:FWugws3z.net]
どうせ後でIdに紐付いたHoge永続オブジェクトをどっかから読み込むんだろ
最初からclass HogeRepositoryで良いじゃん
リスク買ってまでIdを丸出しにしなくて良いよ

108 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 14:49:53.45 ID:zzgKuIEv.net]
>>106
HOGE=100が変更されたら再コンパイル必須だろ
つーか、再コンパイルおそれるって、昭和のジイさんですか?

109 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 15:32:05.55 ID:Gz2IfgKr.net]
>>108
id[HOGE]=100をやりたいって話だろ

110 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 15:46:21.63 ID:tVgJgcBS.net]
enumとini同時に使う意味がないから片方消す
どっちかは要件による
それ以外まともな解決策なんてないと思うが



111 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 15:48:09.53 ID:tVgJgcBS.net]
代替えとしては「名前=値」を「enum数値=値」に変換ツールを作って
メインの方では後者を読み込むというのはあるが、はっきり言って無駄だな

112 名前:デフォルトの名無しさん mailto:sage [2015/12/12(土) 21:45:39.70 ID:7G0ybzbE.net]
実行時に読み込めよ
何のための設定ファイルだかわかんねえよ
ビルド時に確定させたいならiniにするのが間違い
ヘッダに書けば良い

113 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 02:33:53.99 ID:qbposeEZ.net]
HOGE=0の時、iniファイルに"HOGE=100"って書いてあったら
id[0]に100をいれたいが、HOGEと"HOGE"が必要になるって話じゃないのか

114 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 03:31:17.37 ID:wqYJ5l85.net]
>>112
実行時に読み込む話に決まってるだろボケ

115 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 08:23:30.44 ID:hMJMcrF3.net]
struct{
char *name (HOGE)
int value (100)
}
if(strcmp(name, "HOGE") == 0) {
value = (iniのHOGEの値)
}
じゃあかんのか

116 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 08:38:10.26 ID:2dKkDW/6.net]
>>113
enum の識別子 HOGE と iniファイルや key探索での "HOGE" か

id[HOGE] = FormIniFile("HOGE")
のような記述ならマクロでごまかすかな
#define IMP(arg) id[arg] = FormIniFile(#arg)

117 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 08:51:55.16 ID:GP8wOhjz.net]
iniファイルで値のカンマ区切りを許可する
それ以外を書き込まない
***hoge.ini
HOGE = 100,
FUGA = 101,
PIYO = 102,

*** .hファイル
enum{
#include "hoge.ini"
}

118 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 09:17:56.38 ID:qbposeEZ.net]
>>116
enum増やすたび1行書かなきゃいけないのがネックだよね

enumの定義をマクロにしてカンマ区切りの長い文字列作って…ってのもやってみたが無理矢理感が拭えない

119 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 09:29:44.34 ID:2dKkDW/6.net]
>>118
あまりよいやり方じゃないけど、列挙する箇所を ファイルにしておいて
hoge.inl
 IMP(HOGE1)
 IMP(HOGE2)

enum 定義は
 #define IMP(arg) arg,
 enum {
  #include "hoge.inl"
 };
 #undef IMP

初期化するところで
 #define IMP(arg) id[arg] = FormIniFile(#arg);
 #include "hoge.inl"

無理やり感満載w

120 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 09:34:03.10 ID:kwkQZ1G0.net]
シンボルのHOGEは必須なのか?keyに対応したindexがあればいいならこんなのでいいんだが。

static const char * s_keys[] = {
"HOGE",
"HAGE",
"FUGE",
};
で、iniファイルから読み込んだkeyをs_keysからサーチしてindexを求める。

enum必要ならマクロと#includeでなんとかなるだろ。



121 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 09:56:45.90 ID:+vfdgVrV.net]
class Id { private: int value; // 以下略

class IdCollection : Singleton<IdCollection> {
public: Id get(string const & s) { /* 略 */ }
public: Id hoge() { return get("HOGE"); }
private: void initialize() { loadFromIniFile("ids.ini"); }
private: void loadFromIniFile(string p) { // 以下略

int main() {
DoSomething(IdCollection.instance().hoge());

122 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 11:11:00.44 ID:kwgRFe9P.net]
IDが実質的に2つある時点で簡単な方法は無いだろ
これ以上荒らしてんじゃねえよ

123 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 12:32:13.41 ID:OeYxj6fv.net]
マクロを駆使すれば可能
でも質問者不在でアレコレするのは面倒なのだ
保留

124 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 14:43:20.17 ID:pXef0Z5L.net]
closeしますね

125 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 18:52:13.38 ID:NZTqhglG.net]
>>39
argv[]が64bit整数を使わないといけないような非常に大きな整数の場合、例えば
long long a = foo(argv[1]);
と書けるようなfoo()って標準関数にありますか?

126 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 19:02:24.12 ID:lukQoPhs.net]
#include <stdlib.h>
long int strtol(const char *nptr, char **endptr, int base);
long long int strtoll(const char *nptr, char **endptr, int base);

127 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 20:45:56.44 ID:vZabZWT7.net]
//a.h
typedef struct aaa_t aaa;
aaa *aaa_0 ();
void aaa_1 (aaa *);
void aaa_2 (aaa *);
void aaa_3 (aaa *);
aaa *aaa_4 (aaa *);
-----------------------------------------
//a.c
struct aaa_t {
int a;
char *b;
void *c;
int d;
int e;
int f;
};
aaa_0 とかの定義
-----------------------------------------
//b.c
#include "a.h"
void f () {
aaa *p = aaa_0 ();
aaa_1 (p);
aaa_2 (p);
aaa_3 (p);
}
今現在Cでこんな感じになってるプログラムをC++にして
struct aaa_t をclass aaaにしてaaa_1とかをaaaのメンバ関数にしようとしたら
ヘッダファイルa.hのほうにclass aaaの定義を書いてその中にint aとかchar *bとかも
書くことになると思うんですけど、そうするとCのときよりも情報が見えるようになってしまうんですが
それを隠したままにできる方法ありますか?

128 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 20:49:28.59 ID:4HT+vwrK.net]
pimplでぐぐる

129 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 21:28:27.41 ID:vZabZWT7.net]
ありがとうございました
ヘッダファイルの方でクラスを抽象クラスにするしかないのかとか思ってました

130 名前:125 mailto:sage [2015/12/13(日) 21:32:46.95 ID:NZTqhglG.net]
>>126
回答ありがとうございました。



131 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 22:51:14.40 ID:EpxG0SJy.net]
>>129
抽象クラスで何か不満でもあるの?それが pimpl で解消される?

132 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 23:00:33.98 ID:vZabZWT7.net]
継承させるのは不満は大有りだった
今教えてもらったものでもCに比べたらポインタの分サイズは大きくなるけど

133 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 23:13:17.80 ID:EpxG0SJy.net]
>>132
そのサイズの増加を受け入れるほどに継承に何か実害がある?
実装隠蔽の手法としてどうも pimpl のほうが人気がある理由がよくわからん。
委譲コード書くのもめんどいし。

134 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 23:18:54.26 ID:pXef0Z5L.net]
継承は基底クラスの実装への依存が発生する悪手なんだよね

135 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 23:37:27.90 ID:vZabZWT7.net]
元々一つなのを二つに分けるのは何か不自然な感じがしたから
サイズに関しては仮想関数へのポインタ持つから継承でも増えるってのもあるし

136 名前:デフォルトの名無しさん mailto:sage [2015/12/13(日) 23:44:03.11 ID:XZ6E7GcH.net]
>>134
どこに依存が発生してんのよ
ideone.com/B748fb

137 名前:デフォルトの名無しさん mailto:sage [2015/12/14(月) 00:16:21.17 ID:zTGRmQeT.net]
>>135
クラスが二つに分かれるのは pimpl でもいっしょじゃないの?

比較記事もけっこうあるね。
https://www.google.co.jp/search?q=interface+"pimpl"

138 名前:デフォルトの名無しさん mailto:sage [2015/12/14(月) 01:42:56.68 ID:MegyS/CV.net]
private変数を隠蔽するだけのために面倒くさいことをさせてくれるもんだ

139 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 02:04:47.70 ID:GD1VdqaI.net]
linuxのforkが意味解らん
forkを実行した時点で、forkの戻り値のpidが違うだけの同じコードが実行されるプロセスが複製されるの??

何がどうなってるのかさっぱりだけど衝撃的過ぎる

140 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 03:33:31.62 ID:AjaVKfD6.net]
例えばファイルを開いててfork()して、子プロセスが更新すると
親プロセスでファイルを見ると更新されてる。 



141 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 05:25:11.90 ID:RYa4o3uw.net]
std::vectorを使う時の質問なんですけど、クラスのメンバー変数として宣言する時ってどうやってサイズ指定するんですかね?

#include <vector>
using std::vector;
class vtest
{
public:
vector<int> hoge(10);
}

みたに書くと型を指定しろって言われて、個人的には関数として認識されてるんじゃないかなって思うんですけれど…

142 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 05:39:14.20 ID:B8igkfF6.net]
>>139
その通り
何でこんな面倒な機能があるかはこことか参考になるかと
www.ncad.co.jp/~komata/c-kouza3.htm

143 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 06:58:46.88 ID:1RaqkxGq.net]
>>141
vtest() : hoge(10) {}

144 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 07:05:23.53 ID:RYa4o3uw.net]
>>143
つまりはクラスのコンストラクタで渡せ、って事でいいのかな?
なんかいろいろ試してたら
hoge._BConstruct([要素数],[数値])で初期化できるっぽい…?

145 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 07:13:02.00 ID:RYa4o3uw.net]
連投スマン
hoge.resizeで要素数の設定から初期パラメータまで設定できるっぽいな、サンクス

146 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 09:51:36.66 ID:9AhINhvX.net]
>>133
抽象クラスは委譲コードの分の余地がないので
基底への変更にものすごく弱い

147 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 10:10:25.74 ID:FTksUk/b.net]
>>146
「委譲コードの分の余地」ってどんなの?
pimpl にしかできないことっぽいんだけど、思いつかない。

148 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 10:14:40.27 ID:9AhINhvX.net]
>>147
pimplの呼び出し部分で変更余地があるだろ
委譲コードなら何でもそうだけど

149 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 10:29:07.10 ID:FTksUk/b.net]
>>148
それがなんで抽象クラスではできないことになるのか、わからない。

150 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 11:12:33.82 ID:9AhINhvX.net]
>>149
言っている意味がわからない、派生先で委譲するという事か?
その場合も結局クラス定義で委譲先への依存が起こるので同じ事
継承してファクトリ経由で生成しても必ず何処かで実装依存する事は避けられない
pimplの場合はpimplのみの緩衝で防げる



151 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 11:14:47.92 ID:9AhINhvX.net]
訂正、委譲先ではなく委譲元

152 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 14:19:47.85 ID:Z+PgRVVd.net]
>>139
まーWindowsしか知らない人がfork知るとひっくり返るよね
Windowsではスレッドを使うのが一般的だけど
Unix系ではforkでマルチプロセスが基本だったんだよね
他にもファイルの扱いとかいろいろ斬新だよね

153 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 19:54:49.22 ID:crf4TWR5.net]
継承は実行時に合成しにくいんだよね
基底クラスの実装変更が派生クラス全てに影響するし
もうまじさいあくぷんぷん

154 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 22:34:09.78 ID:46Jh9WrX.net]
>>131
vector<int> baka = vector<int>(10);

155 名前:デフォルトの名無しさん mailto:sage [2015/12/15(火) 22:52:06.66 ID:FTksUk/b.net]
>>150
ごめんよ。↓こんなコードを比べてると思ってるんだけど、あってる?

// PimplInterface.hpp
struct PimplInterface {
int f();
private:
class Impl;
Impl* pimpl;
};
// PimplInterface.cpp
struct PimplInterface::Impl {
int f() { return 1; }
};
int PimplInterface::f() { return pimpl->f(); }

// AbstractInterface.hpp
struct AbstractInterface {
virtual int f() = 0;
};
// AbstractInterface.cpp
struct AbstractInterfaceImpl : AbstractInterface {
int f() { return 1; }
};

「基底の変更」は AbstractInteface つまり外部インターフェースの変更のことで、
pimpl の「委譲コード」が PimplInterface::f() の定義のことだと思うんだけど、
やっぱり「基底の変更にものすごく弱い」とか「実装依存」とか言ってるのが
なんのことだか見えてこないんだ。

*Interface にどんな変更が入った場合に起こる問題のことを言ってるの?

156 名前:デフォルトの名無しさん mailto:sage [2015/12/16(水) 11:31:36.35 ID:3uR0/mnz.net]
>>155
派生クラスも実装だぞ
基底クラスへの変更は、派生の非公開部分の定義に影響が波及しうる
防止する方法は委譲が簡単で、その極端な物はpimpl

157 名前:デフォルトの名無しさん mailto:sage [2015/12/16(水) 11:57:18.05 ID:3uR0/mnz.net]
非公開ではなく非仮想部分の定義と言ったほうが良かったかな
派生クラスでpublicメンバ増やす事もよくあるし

158 名前:デフォルトの名無しさん mailto:sage [2015/12/16(水) 12:08:47.02 ID:fTEXesYP.net]
「インターフェース」なのだからインタフェース以外からアクセスしちゃダメだろう

個人的には利用者側に
AbstractInterface *x = new AbstractInterfaceImpl;
のように使わせることを強制するからインターフェースは使わないけど

159 名前:デフォルトの名無しさん mailto:sage [2015/12/16(水) 12:14:31.21 ID:3uR0/mnz.net]
>>158
インスタンス化についてはファクトリ云々でとっくに言及したつもりだが…

160 名前:デフォルトの名無しさん mailto:sage [2015/12/16(水) 12:40:53.99 ID:3uR0/mnz.net]
まあ間違ったことは言ってないはずなので、読めば理解できると思う
それが何の役に立つかは、大規模になってみればわかる



161 名前:デフォルトの名無しさん mailto:sage [2015/12/16(水) 23:04:32.63 ID:ReBK9+wB.net]
>>156-157
インターフェースが変わったら実装に影響が波及しうるのはあたりまえじゃないの?
それの何が問題になるの?

仮に問題があったとして、 AbstractInteface を変更したときに
AbstractInterfaceImpl に変更が入るのが問題だというのなら、
PimplInterface を変更したときに PimplInterface::Impl や
PimplInterface::f() に変更が入るのも同じように問題なんじゃないの?

162 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 08:13:07.84 ID:qGFinMD/.net]
pimplの目的はクラスのコンパイルコストを実行時コストに転化する事だけ
実装に依存するとかしないとか継承がいいか移譲がいいかとかは関係のない話だよ

163 名前:デフォルトの名無しさん [2015/12/17(木) 20:25:09.68 ID:M1gCQnPP.net]
>>161
Pimplは公開側のヘッダへの変更がなくなり依存元の定義には影響しない
全く別

164 名前:デフォルトの名無しさん [2015/12/17(木) 20:26:53.95 ID:M1gCQnPP.net]
>>162
いいやそれも違う
実装をきちんと分離している分、モジュール性は上
継承が無駄な依存関係を作るのはもはや常識だろ

165 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 20:37:51.88 ID:NMgzdQxk.net]
struct large
{
    char data[5'000'000];
};

int main()
{
    auto p = new large{};
    return 0;
}

出力
1>------ ビルド開始: プロジェクト:CppTest, 構成:Debug x64 ------
1> main.cpp
..........main.cpp(8): fatal error C1060: ヒープの領域を使い果たしました。
========== ビルド: 0 正常終了、1 失敗、1 更新不要、0 スキップ ==========

配列のサイズを5MB以上にすると上記エラーが出てコンパイルに失敗するんですが、どのように直せばいいでしょうか。

166 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 20:42:26.86 ID:T7FXs248.net]
c++erはpimplとか言ってるけど所詮はbridgeパターンでしかない
デザインパターンを語るコンテキストではbridgeパターンと呼ぶ
c++に特有のコンパイルコストを削減するテクニックの事を語るコンテキストではpimplイディオムと呼ぶ
pimplイディオムをbridgeパターンの意味で語る人は理解が浅い

167 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 22:39:55.30 ID:RFQK/sQs.net]
>>165
ここは初心者が討論する場です
場違いだから動的メモリをGoogle様に教えを乞え

168 名前:デフォルトの名無しさん mailto:sage [2015/12/17(木) 23:51:42.56 ID:SCk0qjaE.net]
>>163
それ抽象インターフェースでも同じだろ。
>>164
抽象インターフェースでも実装をきちんと分離できてるだろ。

違うというのなら >>155 のコードに対する変更で、
抽象インターフェースの場合だけ問題が起こるような例を挙げてみろよ。

169 名前:デフォルトの名無しさん [2015/12/18(金) 10:44:40.42 ID:mykTsSjn.net]
>>166
コンパイルが速いのは翻訳単位の分離の効果の一つでそれだけではないだろ
それとpimplは確かに大部分はbridgeと見ることはできるが
形式上の汎化なので変更のすりあわせは考えなくていい利点がある

>>168
例を挙げてみろという以前に
そもそも>>155では実装が見える位置に必要な時点で論外だと思うが

170 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 11:16:58.75 ID:auMwa2zz.net]
>>169
は?コード読めてないのに偉そうに言ってたの?
hpp →使用者から見える位置
cpp →使用者から見えない位置
だろ?

どちらも実装は使用者から見えないところで好きにできる。



171 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 11:20:44.51 ID:O/HlozI2.net]
>>169
おいおい…

172 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 18:28:01.68 ID:LQ+VNahf.net]
不毛な争いはもうやめようよ
みんなでC#を使おう

173 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 18:57:55.99 ID:znmCm21O.net]
いやいや、漢は黙ってアセンブリでしょ

174 名前:デフォルトの名無しさん mailto:sage [2015/12/18(金) 21:25:47.60 ID:LbePE/nB.net]
センブリは苦い

175 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 09:37:32.82 ID:n5v6Wxrv.net]
>>165ですが自力で問題を解決できないので、別の質問スレに改めて投稿しようと思います。失礼しました。

176 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 13:18:46.45 ID:O2ZUrLIw.net]
>>175
え gccなら何の問題もないけど。数ギガでもいけるよ。
vcにそんな設定あったかな。

177 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 17:09:31.16 ID:dNXWfsX0.net]
5MB以上が無理ってのはにわかに信じがたいんだが
たかが32bitのフルハイビジョンの画像でも7MBあるのにさー
今時5MB以下じゃ何にも出来ねーじゃん

ありえないと思ってVS3015でコンパイルしたら普通にできたし、当然

struct large
{
    char data[5000000];
};

new large();

178 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 17:38:00.46 ID:L2SZ6ujc.net]
VS3015なら出来るのかも知れないが俺のVS2015じゃ同じくC1060になった
この手順通りにやれば解決すると思うけど面倒くさい
https://msdn.microsoft.com/ja-jp/library/yz7kx3y2.aspx
質問者はこれは試したのか?

179 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 20:20:28.18 ID:8yNt9Gxa.net]
>>177
3015・・・

180 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 20:31:32.46 ID:phu0BYTx.net]
バグじゃね
そんな糞コンパイラ捨てちまえ



181 名前:175 mailto:sage [2015/12/19(土) 20:53:16.90 ID:n5v6Wxrv.net]
"vcvarsall amd64"を実行してコマンドライン上で"cl main.cpp"という形にしてもだめでした。
タスクマネージャを見てるとcl.exeが4GB近くメモリを消費した上でコンパイルエラーになっていました。

しかし>>177さんがやったように、newの波括弧を丸括弧に変えるとすぐにコンパイルが完了しました。
どうもありがとうございました。

182 名前:デフォルトの名無しさん mailto:sage [2015/12/19(土) 23:34:04.44 ID:O2ZUrLIw.net]
() でも {} でもいいのはc++11でしたけ?
c++11準拠のgccならどっちでも出来ます。

183 名前:デフォルトの名無しさん mailto:sage [2015/12/21(月) 18:59:46.87 ID:WFqlvm2l.net]
GCCがC++11に準拠していたとは初耳です

184 名前:デフォルトの名無しさん mailto:sage [2015/12/21(月) 20:12:38.96 ID:KpoKQwNC.net]
class Node {
Node *node;
~Node() {
delete node;
}
};

こんなコードを考えたのですが、インスタンス生成時、nodeポインタは常にNULLで初期化されると考えてよいですか?
言語仕様上仮にポインタ型メンバ変数へのNULL初期化が保証されない場合、
delete node;のタイミングで未知のアドレスを参照し、セグメントエラーが発生する気がします。

Clangでは常にNULLで初期化されることを確認していますが、これは言語仕様として本来保証されていることなのでしょうか?

185 名前:デフォルトの名無しさん mailto:sage [2015/12/21(月) 20:19:38.56 ID:hysKJ3zZ.net]
null初期化は保証されません
コンストラクタで0にしておきましょう

186 名前:デフォルトの名無しさん mailto:sage [2015/12/21(月) 21:56:30.70 ID:pRvfBbh1.net]
https://gcc.gnu.org/gcc-4.8/cxx0x_status.html

187 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 15:56:31.30 ID:yVaIQO7m.net]
>>185
たしかにデフォルトコンストラクタのアセンブラコード読むとNULLでの初期化は行われていませんでした。
Clang上で常にNULLになるのはたまたまなのかもしれません。

188 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 21:49:46.29 ID:iXAEsn1T.net]
nullptr使えカス

189 名前:デフォルトの名無しさん mailto:sage [2015/12/22(火) 23:47:23.54 ID:ntafDQl8.net]
むぐぐ…

190 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 01:04:09.01 ID:Bzaz3PF3.net]
デバッグモードだと何もしなくてもNULLで初期化してくれるかもね



191 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 01:32:56.47 ID:xKy7nhKt.net]
つてか、デバッグモード時は5A5Aとかbeefとかdeadとかで初期化して欲しい
ゼロだと動いちゃうかもしれない

192 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 01:35:24.25 ID:arljeKOE.net]
feeefeee
ふえぇぇふえぇぇ

193 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 01:58:19.57 ID:at23GWqE.net]
デバッグモードってVSのそれでしょ?
それならcdcd...で初期化されてない?

194 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 09:21:35.68 ID:ODpqAUDQ.net]
"ヘヘヘヘヘヘ…"
だっけ

195 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 15:31:40.52 ID:ECsqfIr3.net]
フフフフ・・・
じゃなかったっけ

196 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 15:55:47.35 ID:r+tlUph/.net]
ハハハハ…
だったかも

197 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 16:12:39.75 ID:xKy7nhKt.net]
cdcd…なら "ヘヘ…" だな

198 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 22:38:54.77 ID:7WMNq5Xe.net]
メルポン ワンドボックス

199 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 22:57:15.26 ID:1ZCzEE1G.net]
構造体のポインタ型メンバは確かに毎回NULLだった気がする。
仕様だと思ってたぜ。
NULL初期化って余計なお節介だな。

200 名前:デフォルトの名無しさん mailto:sage [2015/12/23(水) 23:24:02.70 ID:McSS3rOm.net]
clangは3.7から配置newの時もゼロ初期化されるようだ
規格でゼロ初期化に変更あったっけ



201 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 01:00:03.19 ID:VDgCwlJn.net]
構造体のメンバでも、ゼロ初期化のコードを明示的に書かない限りゼロに初期化されることは無いと思うけど
もしなっていてもそれはタマタマと考えるべきかと

202 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 01:10:23.72 ID:K6EVLooj.net]
もしかして
new Pod; // 初期化されない
new Pod(); // ゼロ初期化される
の違いが分かってないとか

203 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 01:19:35.59 ID:fAuO55DH.net]
昔それでハマったわ

204 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 02:01:32.75 ID:V9PGbmLB.net]
デフォコンを書いとけばいんだよね・・・

205 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 11:28:46.92 ID:JZgNJNA5.net]
この場合のPodのデフォコンは未実装と考えてよい?

206 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 12:25:55.70 ID:dR07FXZ0.net]
>>202
これ、規格になってる??

207 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 18:29:24.36 ID:tvPg4lrF.net]
これからcを学んで仕事に使うんですが基本的な文法や機能は覚えるとして、他になにかやっておいたほうがいいことってありますか?

208 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 18:46:20.52 ID:Ar5g1rkf.net]
どの分野で、というのが一番大事だわな

209 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 19:55:11.14 ID:dcfXgtmn.net]
組み込み系…かなあ

210 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 20:13:24.98 ID:dw0e86QI.net]
今の時代にcを学ぶ仕事ってすげぇニッチだな



211 名前:デフォルトの名無しさん mailto:sage [2015/12/24(木) 22:17:30.83 ID:Ar5g1rkf.net]
組み込み系でC言語を使うのが初めてなら↓の本を買っといた方がいいかもしれない
【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C言語版]

あと、職場独自の作法には慣れといた方がいいかもしれない

212 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 02:23:10.06 ID:0EBqQae1.net]
Web系が見た目?華やかなだけで、
安定して儲かってるのが自動車産業で、
その大多数がC言語なのにな

213 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 03:04:12.73 ID:DzMu9hDD.net]
じゃ misra にも慣れとくべきか

214 名前:デフォルトの名無しさん mailto:sage [2015/12/25(金) 20:31:38.55 ID:/bEJrxfY.net]
>>199
アドレスの参照値がたまたまNULLだったってことだと思うが。
二回目の呼び出しではNULL以外の値が入ってるはずだぜ?

215 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 22:16:59.57 ID:IeRmux4p.net]
CやC++以外の言語しか使ったことないと、数年程度の経験で俺は凄腕のPGだと勘違いしやすい
C++の摩訶不思議な世界に行くと自分はゴミ同然だと気付かせてくれる

216 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 22:21:14.22 ID:bmbNcMd5.net]
と言うとんでもない中二をこじらせてしまうのがC++の悪いところ

217 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 22:33:59.51 ID:HLaSlD1p.net]
C++で数年過ごして数々の厨二的な黒魔術を使いこなすようになってから他の言語に行くとそれが殆ど黒歴史だったと気が付くんだよね

218 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 22:39:10.27 ID:+JcsFmSH.net]
でもまぁC++から他の言語は行きやすいけど
逆はキツイよね

219 名前:デフォルトの名無しさん mailto:sage [2015/12/26(土) 23:21:16.13 ID:YV12MLKo.net]
C/C++の縛りには慣れておいたほうがいいね
C/C++の縛りは現実の計算機の縛り

220 名前:デフォルトの名無しさん mailto:sage [2015/12/27(日) 03:03:31.33 ID:zaprQqTh.net]
せっかくいい石採用してるんだから、直接アセンブリ言語使わせてくれよ!
と思う事しばしば



221 名前:デフォルトの名無しさん mailto:sage [2015/12/27(日) 09:08:19.31 ID:PMis8xQ4.net]
という役に立たないDIY的な発想のヲタを量産してしまうのがCの悪いところ
他人への価値提供のためでなく自分の満足のためにCを採択する

222 名前:デフォルトの名無しさん mailto:sage [2015/12/27(日) 13:47:27.66 ID:9EE16oiU.net]
それが楽しいということで

223 名前:デフォルトの名無しさん [2015/12/28(月) 23:47:04.43 ID:ESQO+1YW.net]
1<p->c
というコードを見て一瞬思考が止まった

224 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 00:03:33.08 ID:J2wZ8xV4.net]
>>221それこそまさにC++じゃねw

225 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 00:17:26.08 ID:yDsgWReu.net]
慣れると美味しいC++という事で

226 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 02:00:39.39 ID:RQT/AIDK.net]
C++は熟練者にとって開発効率が向上する方向に進んでいる
単なる趣味でやってるオタがC++のやっかいなところに嵌って暇つぶししたって何の問題もない

227 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 11:21:41.23 ID:tOZW1499.net]
vector<int> v(10);
vector<int> v{10};
これを正しく使い分けないといけない言語改定が開発効率向上とな

228 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 12:46:42.30 ID:RQT/AIDK.net]
>>227
はい。熟練者はそんなところで混乱したりしませんから。

229 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 13:05:11.52 ID:yDsgWReu.net]
func() と func[] の違いぐらいで。

230 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 13:34:33.37 ID:TUTY/6iG.net]
>>227
perfect forwarding(完全転送)という名の完全でも転送でも無いstd::forwardを正しく使うくらい朝飯前だろ?



231 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 13:53:41.29 ID:m+tOu9MT.net]
そらどちらの括弧も同じ意味になる言語の方が稀だろうに。

232 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 21:40:43.02 ID:PaSnbjgD.net]
>>230
「型」の完全転送だからな。

233 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 22:14:54.20 ID:yDsgWReu.net]
[って演算子なんだぞ へへん

234 名前:デフォルトの名無しさん mailto:sage [2015/12/29(火) 22:34:59.08 ID:RwgMy6a6.net]
>>232
どうしてそう息を吸って吐くように嘘をつくのか

std::forward<string>( std::string{} )
型は変わっている

235 名前:デフォルトの名無しさん mailto:sage [2015/12/30(水) 22:59:16.88 ID:gI1ebqZA.net]
[]が演算子だなんて規格に明記されてたか?
と思って調べたら13.5節か
何でこんな変なとこに定義が書いてあんだよ

236 名前:デフォルトの名無しさん mailto:sage [2015/12/30(水) 23:57:37.11 ID:JlgYQswX.net]
Cの時代から演算子だったともうけど・・・
添字演算子とか書いてあるサイトも有るよ

237 名前:デフォルトの名無しさん mailto:sage [2015/12/31(木) 01:38:07.39 ID:W0RDddJC.net]
昔のネタにあったでしょ。
a[0] でも 0[a] でもいいって。
ちょとウニるわな。

238 名前:デフォルトの名無しさん mailto:sage [2015/12/31(木) 16:39:09.60 ID:2szMeuyR.net]
>>234
変わってないよね?

239 名前:234 mailto:sage [2015/12/31(木) 17:19:22.64 ID:QJzU9MHD.net]
>>238
どう見ても変わってるのだが
melpon.org/wandbox/permlink/5ln4xBZ6GrD2jUbw

240 名前:デフォルトの名無しさん mailto:sage [2015/12/31(木) 18:09:22.91 ID:QJzU9MHD.net]
decltypeはvalue categoryで結果が変わるから立証にはならないか

string型がstring&&型に変わると言いたかった



241 名前:デフォルトの名無しさん [2016/01/01(金) 14:17:09.15 ID:7oU3J/K5.net]
CSV データのアクセスについて質問です。環境は Unity です。

no, name, state, price
1, yamada, sleep, 100
2, higuchi, alive, 250
3, inage, alive, 170

みたいに、列に名前をつけているデータがあります。
列はたまに動的で、name と state の間に列が割り込んだりします。

はじめは const で state = 2 として、
決め打ちで読み出していたのですが、
列がずれると定義を変更しなくてはいけません。

そこで、列名でアクセスすれば良いのではないかと思い、
例えば 2番の state を調べるときに
state が何列目か一行目を右に調べてから
2行目の何列目という風にアクセスしています。

一応できているのですが、もっと良い方法はないでしょうか。
あるいは、普通こういうときはどうすべきでしょうか。

この読み込んだ CSV は、かなり頻繁にアクセスするので、
そこも踏まえてアドバイス頂けると嬉しいです。

なんでカラムが変わる前提なのかと疑問があると思いますが、
そこはご容赦お願いします。

242 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 14:33:17.05 ID:R5F49H24.net]
>>241
列名 ⇒ 列番号 の対応表を作ればいいだけじゃね?

243 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 14:33:27.43 ID:yq6n8seg.net]
データ部分を二次元コレクションに格納
ヘッダ部分をヘッダ名->インデックスのディクショナリに格納
おしまい

244 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 21:33:51.36 ID:7oU3J/K5.net]
>>242
それだと、列が増えたりする度に定義ソースを書き換えるような…

>>243
すみません、二次元コレクション調べたのですがイミフでした。
にわかなもので、すみません。


const しているのを変数にして、
一番最初に列の名前の場所を動的に拾い、
構造体に放り込んでみます。

みなさん、ありがとうございました。

245 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 22:01:13.16 ID:NO+H6ZMg.net]
>>244
> それだと、列が増えたりする度に定義ソースを書き換えるような…

当然「動的」に作るってこと

>>243
> ヘッダ部分をヘッダ名->インデックスのディクショナリに格納

と同じことを言っている

246 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 22:22:51.52 ID:dF7ELeO+.net]
.NetのDataTableをパクったクラスを作る
ファイルからデータを読み込んで上記クラスのインスタンスに格納する
以上

247 名前:デフォルトの名無しさん mailto:sage [2016/01/01(金) 23:36:34.95 ID:9DJLBWi4.net]
>>241
>一応できているのですが、もっと良い方法はないでしょうか

いえそれが最善です
>>242-246のたわごとは無視して下さい

248 名前:デフォルトの名無しさん mailto:sage [2016/01/02(土) 18:39:57.59 ID:nW8KZWOh.net]
#include <iostream>

class A {
public:
A(){}
~A(){}
int i:1;
};

int main(int argc, char const* argv[])
{
A a;
std::cout << a.i ;//0

return 0;
}

UE4のソース見ていると、
メンバ変数末尾に:がついたコードがあるんですが一対何なんでしょう

なぜコンパイルエラーにならないのか?

UEヘッダーツールで後々セッティングするための記述なんでしょうか?
よろしくお願いします

249 名前:デフォルトの名無しさん mailto:sage [2016/01/02(土) 18:42:48.44 ID:5/Tw741l.net]
ビットフィールド知らんのか

250 名前:デフォルトの名無しさん mailto:sage [2016/01/02(土) 18:49:51.57 ID:BIgpFdUh.net]
>UE4のソース見ていると

自分が知っているものを他人も知っている前提で物申すな低能



251 名前:デフォルトの名無しさん mailto:sage [2016/01/02(土) 18:51:55.62 ID:nW8KZWOh.net]
ありがとうございます
使ったことなかったので知りませんでした

どこかで聞いたことぐらいはあったかも知りませんが、
いまいちぐぐり方が難しいので助かりました
C++ デフォルト メンバ変数 : とか結構見当違いな方向でぐぐってました

ありがとうございました

252 名前:デフォルトの名無しさん mailto:sage [2016/01/02(土) 19:03:02.99 ID:9k2o+ba6.net]
ビットフィールドってなんだっけ?と数秒w
思えば一回も使った事ないです。

253 名前:デフォルトの名無しさん mailto:sage [2016/01/02(土) 20:09:45.36 ID:Ko89Gf9x.net]
>>250
レスにソース書いてあるのに何を言ってるんだよ

254 名前:デフォルトの名無しさん mailto:sage [2016/01/05(火) 18:38:18.23 ID:zgQ43Iu9.net]
答え:SQLiteを使う

255 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 20:37:47.38 ID:gc7pwQgr.net]
int func(Form^ form);

この^記号ってどういう意味?

256 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 20:39:12.47 ID:yJqiucPC.net]
>>255
それは別の言語だからVisual C++ C++/CLI関連のスレで訊け

257 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 20:41:04.59 ID:h+RBpIK2.net]
| が bit毎or で & が bit毎のand であるように、
^ は bit毎の xor

258 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 20:48:43.06 ID:/U+i+vMx.net]
>>255-257
いや 2項演算子じゃないぞ
C++/CLI のハンドル型とかいうポインタ(*)の変形らしい

259 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 20:51:12.19 ID:h+RBpIK2.net]
あー 関数宣言記述での話だったか
頭の int が見えてなかった
ありがとね >>258

260 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 20:59:30.22 ID:2h/9GNmm.net]
>>257-259はQの自演



261 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 21:03:02.67 ID:h+RBpIK2.net]
俺 Qz 認定かー なけるorz

262 名前:デフォルトの名無しさん mailto:sage [2016/01/08(金) 23:39:42.16 ID:WIwHnmZz.net]
別の言語だったんかい

263 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 13:29:58.86 ID:VxUMtYXU.net]
#define template_key_value <K, V>

template template_key_value
class MapA {};

template template_key_value
class MapB {};

これと同じことをより安全に実現する方法って有りますか?

264 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 13:41:04.34 ID:IUrb95R1.net]
>>263
何も危険なことなんて無いような?

そのままじゃコンパイル通らないけど、そこが問題でも無いだろうし。
クラス定義が空だからテンプレートにする意味が無さそうだけど、そういう話でもないだろうし。
何がしたいのかよくわかんない。

265 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 15:45:01.43 ID:NVJocn8Z.net]
CPPを使う意味が分からない

266 名前:デフォルトの名無しさん mailto:sage [2016/01/11(月) 22:00:19.19 ID:E66NlO7o.net]
>>265
visual studio使えば自動的にc++やん

267 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 00:23:03.57 ID:fG9YW/Cm.net]
>>266
…??

268 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 00:34:18.71 ID:wtMUPjLq.net]
>>267
VisualStudio使ったこと無いの?
昔から.cppを使う慣習があって、VisualStudio含むいくつかの開発環境ではそれに従うと使いやすくなってるんだよ

269 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 00:36:04.73 ID:wtMUPjLq.net]
ああもしかしたら>>265はCPP=Cプリプロセッサの意味か
そうなら紛らわしい書き方すんな

270 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 09:32:08.92 ID:gKzzuNPX.net]
約一名がアホな誤解しただけで、紛らわしくはないだろ



271 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 11:00:20.32 ID:vQw7MuFL.net]
>>264
すみません書き方間違ってました。
#define template_key_value <typename K, typename V>
template template_key_value class MapA {};
template template_key_value class MapB {};
テンプレートが長く複雑になる場合にわざわざ直書きすると、可読性が悪くなるので別名を付けたいと考えています。
ただC++の世界ではマクロが嫌われているようなので、どうしても以下の様な聞き方を強制されてしまうのです。
template <typename K, typename V> class MapA {};
template <typename K, typename V> class MapB {};

272 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 11:16:41.18 ID:zdBaNW7Z.net]
>>271
「嫌われている」から排除を強制と思うのはおかしい。
実際にマクロを使って何が問題なのか、よく考えて判断したほうが自由になれるよ。
使い終わったら #undef してもいいんだぜ。
少なくとも書き込まれた例だけではマクロを使うほどの話とは思わないけど、実際はもっとあるんだろうな。
違いを無視できる話かどうか知らんけど、ひとつのクラステンプレート内にクラスを定義する形でいくらか
マシにできるかもしれない。

273 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 12:44:56.38 ID:jL8tZsFO.net]
template <typename K, typename V> class MapA {};
typedef MapA<string, int> MAP_A_1;
typedef MapA<string, string> MAP_A_2;
とかじゃダメなの?

274 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 17:49:46.69 ID:rnRes0fv.net]
>>263
言うほど短くならないような。
templateが冗長だから頭のtemplateもマクロに含めたら?

275 名前:デフォルトの名無しさん mailto:sage [2016/01/12(火) 18:50:45.22 ID:ezb8i33T.net]
#define T template
#define L long
#define typename TN

276 名前:デフォルトの名無しさん [2016/01/12(火) 23:47:38.33 ID:9sPejAjF.net]
>>275
(アカン)

277 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 13:25:11.31 ID:36fPT7nK.net]
こう書けるのが一番理想だな

template <typename K, typename V> class Map {};
class MapA : Map<K, V> {};
class MapB : Map<K, V> {};

278 名前:デフォルトの名無しさん [2016/01/13(水) 20:41:54.84 ID:kNuNR485.net]
fscanfでcsvファイルからデータを読み出したいのですが、
fscanfの返り値がおかしく、EOFとならずに処理が終了しません。

データの列要素は15なので、返り値も15となるはずなのですが、
「1」と表示されてしまいます。

行は2千万行近くありますが、その値を過ぎても終了しません。

csvファイルのデータ容量は1.42GBあります。
助言宜しくお願いします。

問題だと思われるループとfscanfの部分を記載します。

while(ret=fscanf(fp,

279 名前:デフォルトの名無しさん [2016/01/13(水) 20:44:10.04 ID:kNuNR485.net]
while(ret=fscanf(fp,"%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf,%lf",&a,&b,&c,
&d[0][0],&d[0][1],&d[1][0],&d[1][1],&d[2][0],&d[2][1],
&e[0][0],&e[0][1],&e[1][0],&e[1][1])!=EOF){

    処理等

}

280 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 20:46:51.56 ID:Lg0tGVPB.net]
>>278
fopen(); 付近はどうなってるのか



281 名前:デフォルトの名無しさん [2016/01/13(水) 20:49:56.90 ID:kNuNR485.net]
>>280
すいません書き忘れてました。

FILE *fp

fp=fopen("example.csv","r");

if(fp==NULL){
printf("no file\n");
exit(0);
}

282 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 20:50:31.77 ID:Lg0tGVPB.net]
>>279
ああなるほど、fopen関係なさそう。

> while( (ret = fscanf(fp,"…",)) != EOF){
みたいにカッコで明示すべきでは。

というか、それコンパイル通ってるの?

283 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 20:50:57.42 ID:XHmQOsbK.net]
とりあえず
while ((ret = fscanf()) != EOF) な
ret = fscanf() != EOF だと fscanf() != EOF の論理演算の結果が ret に入る

csvファイルなら fgets() で行を切り出して sscanf() したほうがよさそう

なお、厳密にやり始めると一文字ずつパースするはめになるだろう

284 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 20:52:18.55 ID:Lg0tGVPB.net]
>>282は間違い。コンパイル通るか

285 名前:デフォルトの名無しさん [2016/01/13(水) 20:58:57.11 ID:kNuNR485.net]
retの部分は解決できました。ありがとうございます。
今確認してみたところ、最終行を迎えたあと、fscanfの返り値は0となっていました。

286 名前:デフォルトの名無しさん [2016/01/13(水) 21:02:30.81 ID:kNuNR485.net]
最終行を迎えてもEOFである-1が返ってこない理由としては、どのような理由が考えられるでしょか?

287 名前:デフォルトの名無しさん [2016/01/13(水) 21:09:44.61 ID:kNuNR485.net]
その場しのぎですが、
while((ret=fscanf())!=0)とすることで解決しました。
エクセルファイルの作成方法が間違っていたのかもしれません。
そちらを確認したいと思います。

ありがとうございました。

288 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 21:10:13.23 ID:Lg0tGVPB.net]
ret がunsigned とか

289 名前:デフォルトの名無しさん mailto:sage [2016/01/13(水) 21:11:30.82 ID:Lg0tGVPB.net]
ああ>>288は無視して。先程から薬が切れて不安定だな俺は。
>>283だけ見て。

290 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 00:45:24.54 ID:guxsAoup.net]
>>285-287
fscanf() の戻り値の仕様見直せ。



291 名前:デフォルトの名無しさん mailto:sage [2016/01/14(木) 07:40:34.39 ID:dQ9Y6guQ.net]
>>1
RPGツクール2000 , RPGツクールMV https://tkool.jp/mv/ ( JavaScript 採用 )

WOLF RPGエディター www.silversecond.com/WolfRPGEditor/

デュエル・マスターズ Android版 ,i-OS版、公式 dm.takaratomy.co.jp/extra/dmapp/entrygate_ds/
デュエル・マスターズ対戦CGI ex
https://web.archive.org/web/20150809154946/www53.atwiki.jp/dmsuishinparty/pages/314.html

デュエル・マスターズ(デュエマ)DM ONLINE 1.8a  /  VanGuard ONLINE 1.5a
https://web.archive.org/web/20150809160254/uhyohyohyo.sak ura.ne.jp/hsp.html

ヴァンガード専用ネット対戦ツール【 VanGuard Online 】
https://web.archive.org/web/20150809155032/kiimaa.jugem.jp/?eid=61

「カードファイト!!ヴァンガード」のネット対戦ができる公式オンラインゲーム「Cardfight!! Online」 2015年冬スタート
https://web.archive.org/web/20150809153724/supersolenoid.blog63.fc2.com/blog-entry-6886.html

遊戯王 Automatic Dueling System
https://web.archive.org/web/20150809164855/www3.atwiki.jp/ads-wiki/pages/20.html

遊戯王 デュエル・オンライン
https://web.archive.org/web/20150809171527/www31.atwiki.jp/vipdo/pages/15.html
https://web.archive.org/web/20140628005202/do.yugioh-portal.net/

ウィクロス( WIXOSS ) WEBXOSS webxoss.com/about_en.html webxoss.com/DeckEditor/

BG(ボードゲーム)Engine https://web.archive.org/web/20151209080842/https://bgengine.net/
https://web.archive.org/web/20151209172205/14owl.hateblo.jp/entry/2015/12/09/011234

アプレンティス  マジック:ザ・ギャザリング(MtG)オンライン化 homepage1.nifty.com/Q_Q/ap.html
https://web.archive.org/web/20151202202725/homepage1.nifty.com/Q_Q/ap.html

292 名前:デフォルトの名無しさん [2016/01/14(木) 07:41:31.92 ID:dQ9Y6guQ.net]
【 オンラインTCGエディター 】   >>1,>>291

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
デュエマ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、旧ガンダム・ウォー、ライブオン、ディメンション・ゼロ、シャーマン・キング、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書け。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストしろ。
個vs個、多数乱戦、チームvsチーム、個vsチームを実現し、P2P通信対戦プラグイン有り。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみろ。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
バトスピ、ヴァンガ、デュエマなど発売済みゲームソフトが存在してるTCGはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正 + コード記述の仕様書(設計書)を作成。

機能制限した下位版を制作しても原則として発売せず + 上位版デュエリ−グ用でサーバー稼動。

下位版を仮に発売した場合の改造および商用利用には、別途で当社との契約が必要。

さ〜て、インド人ベンダーと日本人の翻訳担当SEを見つけよっと!ww
wc2014.2ch.net/test/read.cgi/entrance2/1451262577/-16

293 名前:デフォルトの名無しさん [2016/01/15(金) 06:36:40.59 ID:KIFGsBEO.net]
>ガチンコ・ジャッジ
これ何?
いかにもDQNあがりのヴァカ企画が付けそうな名前だけど

294 名前:デフォルトの名無しさん [2016/01/15(金) 07:38:29.68 ID:POz82VxF.net]
>>293
ここまで宣伝テンプレ

295 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 04:13:40.21 ID:CT14PSG+.net]
初心者ではないのですが、わからんので教えてください。
$ cat text.txt
aa\nbb
$
となってます。
これを

42 fin.open("test.txt",ios::in);
49 while(fin && getline(fin, buf))
50 cout<<buf<<endl;

な感じで表示すると、
aa\nbb
って表示されます。
どうして
aa
bb
ってならないのでしょうか。何か勘違いしてますか。

296 名前:デフォルトの名無しさん mailto:sage [2016/01/20(水) 04:31:24.49 ID:CT14PSG+.net]
すみません。アホな事書きました。忘れてください。ペコペコ

297 名前:デフォルトの名無しさん [2016/01/23(土) 13:01:50.67 ID:W4+KYwy5.net]
ftellの引数は何故const FILE*じゃないのですか

298 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 14:01:00.59 ID:47kTF92K.net]
C に const はあったっけ?

299 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 14:37:50.67 ID:xYcOlVg1.net]
有るに決まってるだろ
しかしftellが作られた当時は無かったかもな、詳しく知らんが

それにftellがファイルに何も書き込まなかったとしても
FILE構造体を何も書き換えないとは限らないしな
排他処理で何か書き換える実装もあり得る
ftellの実装はコンパイラ毎、環境毎に違うし
ベンダーが自分たちで用意するわけだから
いろんな環境に対応しなければならないC言語としては
安易にconstにできないな

300 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 16:09:29.81 ID:EPxA/CX7.net]
ポインタは伝播するしね。
void で引っ張ればどうにでも化ける。
fstream知ってからは怖いって感じはする。



301 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 16:19:37.61 ID:ruaa+Fti.net]
>>277
class Map<typename K, typename V> {};
そもそもこれが書けないC++仕様の怠慢が問題。

302 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 22:07:23.87 ID:YzHFCyx5.net]
cpp-lang.sevendays-study.com/problemex5.html
このサイトの5-2の問題、数字を漢数字に変換する問題をやってるのですが(面倒なので1〜3のみとする)
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main() {
string a;
map<string, string> m;
int i;
string names[] = { "1","2","3" };
m[names[0]] = "一";
m[names[1]] = "ニ";
m[names[2]] = "三";
cout << "入力してください:"<<endl;
cin >> a;
string::iterator it = a.begin();
for (it = a.begin(); it < a.end();it++){
cout << m[*it] ;
}
//else { cout << "存在しません"; }
return 0;
}

このコードのcout<<m[*it];の部分でエラーが出てしまいます
自分の考えではiterator itを入力されたaの1文字目から最後の文字まで動かし、そのitが指す値をmapで変換しています
なぜダメなのでしょうか?

303 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 22:13:15.13 ID:xc9KTHaP.net]
map<string, string>なのに*itは文字だから

304 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 22:53:37.80 ID:YzHFCyx5.net]
map<char,string>にしたらうまくいきました。
ありがとうございます。
続いてまた質問なのですが、以下のコードで1から10の乱数を10回発生させてsetにその乱数をいれてるのですが、毎回10個の乱数が同じになってしまいます
何が悪いのでしょうか?(実行すると、coutの結果として22222222222、5555555555のようになります)
#include<stdio.h>
#include <stdlib.h>
#include<time.h>
#include<iostream>
#include<set>
using namespace std;
int main() {
int a;
set<int> number;
for (int i = 0; i < 10; i++) {
srand((unsigned) time(NULL));
a= rand() % 10 + 1;
cout << a ;
number.insert(a);
}

305 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 22:54:32.40 ID:Ipz3ttx/.net]
>>299
つい最近までLinuxではftellするとファイル位置がリセットされるバグがありました
つまり書き込まれてます

306 名前:304 mailto:sage [2016/01/23(土) 22:56:59.97 ID:YzHFCyx5.net]
すみません
srandの部分をコメントアウトしたら解決しました

307 名前:デフォルトの名無しさん mailto:sage [2016/01/23(土) 23:04:49.75 ID:2kp06Cdr.net]
>>306
srandはプログラム中1回でいい

308 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 00:56:19.17 ID:fkWZRTEw.net]
>>306
今度は「毎回同じ乱数の並びになります」とか言わないのか?

>>307
日本語が不自由な馬鹿は引っ込め

309 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 01:30:42.36 ID:0rZjknv2.net]
randは非推奨

310 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 01:39:13.09 ID:WyN3o1JX.net]
>>308
>>307が理解できないお前が不自由なんだろw



311 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 05:48:23.27 ID:S0J2srO3.net]
>>307>>308 (の前半部)もそれぞれ正しいでしょう。
>>309 の関連で rand() % 10 で0〜9の乱数を出すのも疑義あり。

ところで >>304 の症状の報告も完全ではないね。
何度もやってるうちには 4444222222 みたいな、
前半と後半で値が違うっていうパターンも生じるはず。
現代の機械だとかなり稀なタイミングだろうけど。

312 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 08:51:16.26 ID:fkWZRTEw.net]
>>310
お前はいつも日本語が不自由だな
ここは「1回でよい」じゃなく「毎回呼んではだめ」なことを教えてやらんといかんのだ
ついでに消してしまって0回になってしまったのに「1回でよい」は日本語がおかしい

313 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 09:19:44.06 ID:OknlX178.net]
お前らそのうち
stdlib.h使うな、setはおかしい
とか文句言いそうだな

314 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 09:33:13.94 ID:bw3MWu8t.net]
>>305
そう言うバグがもっと早く見つかったじゃね?

315 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 10:07:36.64 ID:fkWZRTEw.net]
FILEをconstにできるか否かについての
「ファイル位置を保持する変数を誤って書き換えてしまった事実からFILEの内容を書き換える何らかの必要性が有ったのだろう」
という意見に対し
「FILE全体がconstになっていればファイル位置の変数の書き換えをコンパイルエラーに出来たはず」
という思考はちょっとずれている

316 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 10:49:11.35 ID:Aj6v4F1z.net]
windowsのCやC++でディレクトリごと消したいので、
system関数で 
rm -r "*"
など実行すると出来ると思うのですが、パスを間違えると全部消してしまいそうで
怖いのですがどうすればよいでしょうか?

317 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 10:54:20.90 ID:bw3MWu8t.net]
>>315
> 「ファイル位置を保持する変数を誤って書き換えてしまった事実からFILEの内容を書き換える何らかの必要性が有ったのだろう」
> という意見に対し
はあ?
恥の上塗りでもしに来たのか? w

318 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 10:57:22.78 ID:ETeqPEGX.net]
>>316
気をつけろ

319 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 12:20:43.25 ID:Aj6v4F1z.net]
>>318
それ以外に良い対策はありますか?

320 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 12:32:46.58 ID:lehWL+vO.net]
ケースバイケースだろうなあ
リソースなら予め登録されたファイルパス以下にあるファイル名以外消せないようにチェックするとか



321 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/24(日) 12:40:56.45 ID:30PPh5ie.net]
フルパスを要求するとか?

322 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 12:50:28.16 ID:LHp2Xjej.net]
あるいは予めchmod -w又はchown root:rootしておくとか。

323 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 17:42:47.61 ID:cIbjxOLA.net]
|何らかの事情で明示的にファイルをクローズしたければ、close関数を使用します。
|ofs.close();
|C言語に慣れていると、open と close が対応付いていないことに違和感を感じるかも知れませんが、 |
|C++ の世界では、自動的に行われるのならば、余計な手を出さずに任せてしまうべきです。

fstream の場合、close()しない方がいんですかねぇ

324 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 18:09:23.58 ID:7qZdBJlK.net]
>>323
エラーを無視して良いのであればデストラクタ任せで良いけど
そうでなければ自分でcloseする

325 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 19:46:16.98 ID:sP2ua92H.net]
>>316
パスを明示して毎回ユーザに承認を求める

現実的には、そのアプリ専用の作業ディレクトリを作りそこだけを消す
何らかの間接指定で可変ならば、親ディレクトリへの相対パスがあればはじく

ちなみに通常ディレクトリごとに適切に権限設定されてれば万一の時の被害も少ない

326 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 20:36:40.08 ID:WyN3o1JX.net]
>>312
いつもってお前は俺をどれと同一人物視してるんだw
都合が悪いレスは全て同一人物とか頭おかしいだろw

元々ループ内で呼んでたからの突っ込みなんだが
お前はそれすら理解できなかったようだな

327 名前:デフォルトの名無しさん [2016/01/24(日) 20:56:23.40 ID:BROMbZ7/.net]
「この変数はこれまで変更可能だったが、ただ今よりブロック終了までconstとする」って場合どうしますか? 但し、もう一つconst版のオブジェクトを宣言したくはありません。

なぜこんな事をしたいかというと、元々constで初期化で宣言したかったのに、
@初期化のためには資源の調達が必要であり
A初期化が済み次第すぐさま資源の解放をしたい
この場合、

SomeObj o;
{
  資源確保;
  o = 資源による処理;
}// ここで資源は解放される。
以降、oを用いた処理。

となるでしょう。そうなると、最初のoの宣言は、当然直後に代入があるので、constにできません。しかし事実上の初期化が済んだら、もうoはconstにしたいのです。

328 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 21:03:56.70 ID:50ZcCt7z.net]
>>327
「以降」の処理を const& を受け取る関数に移して、そこに渡す。
あるいは初期化済みの SomeObj を返す関数を作る。
しかし資源の確保となると根本的には SomeObj の責務(コンストラクタの処理など)に移したいところ。

329 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 21:18:25.81 ID:fkWZRTEw.net]
>>327
>>328の対処が取れないときは
ideone.com/pekqNE

330 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 22:13:23.33 ID:0dMHn0ua.net]
>>327
F#?



331 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 22:19:03.60 ID:WyN3o1JX.net]
G♭

332 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 22:20:15.90 ID:eLuVQ3YF.net]
勝手にC++の前提で話してんじゃねーよ
スレタイ読み直せ低能ども

333 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 22:21:45.85 ID:WyN3o1JX.net]
>>332
ブーメラン

334 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 23:03:43.91 ID:cIbjxOLA.net]
>>324
もう使用しないとわかった時点でフォーカス外れる前に自分でcloseした方がお作法ですよね。
なかなかC脳から抜けられない。

335 名前:デフォルトの名無しさん mailto:sage [2016/01/24(日) 23:21:22.85 ID:B3HWqMca.net]
closeで例外が出てデストラクタ呼ばれたり
デストラクタでのクローズが失敗したらどうなるの?

336 名前:327 [2016/01/25(月) 02:02:52.33 ID:8FNbwGHh.net]
分かった、ブロックをそのままλ式にしてしまうのですね!

const auto o { [&...]()->SomeObj
 {
  資源確保;
  資源から必要な情報をまとめる;
  return SomeObj {情報};
 }()// ここで資源は解放される。
};
以降、oを用いた処理。

337 名前:プログラム初めてやってます mailto:sage [2016/01/27(水) 19:48:26.87 ID:GcWX3DUV.net]
2ちゃんねる初めてなので、書き方間違ってたらごめんなさい。

負の値の整数値をscanfで読み込んで、
絶対値を求めるプログラムを書きたいのですが

今の所わかってる知識としてはprintfでの簡単な計算と、簡単なif文のみです
課題としては、printf、putsとif文
今までに習った関数を用いてやれと言う事だと思うんですが
どう考えてもわからなかったため、どうか質問させてください

338 名前:デフォルトの名無しさん [2016/01/27(水) 19:58:02.06 ID:0xRCKJUw.net]
scanfなんて危険で難しい関数を何故初心者に使わせたがるのか

339 名前:デフォルトの名無しさん [2016/01/27(水) 20:04:03.17 ID:Fmvz75rf.net]
Cは危険な関数から入る傾向あるよね

340 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:10:22.92 ID:j65DqSaH.net]
>>338
それ以上に簡単な入力手段がないからだろ



341 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:12:44.23 ID:1VQKsEBj.net]
fgetc() じゃきっついか

342 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:24:33.23 ID:ghSXEhkj.net]
>>337
https://ideone.com/Kn3dfH

343 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 20:43:01.06 ID:H/VHXeqj.net]
危険な関数と言えば printf() もかなり危険だよね。
printf("hello, world\n"); なら大丈夫だけど、
printf("all 50%discount today\n"); だともう怪しい。

>>339 の言う通りだわ。

344 名前:デフォルトの名無しさん [2016/01/27(水) 21:34:21.69 ID:tY0EzgE5.net]
Cは低レベルを担当する言語なので扱いは高レベルな者が担当する。なので危険で良い。効率こそ正義
問題はそんなものを初学者に学ばせること。初学者がそんな重要な部分の開発をするわけがないのだから

345 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:06:55.48 ID:eULyfEEH.net]
Cより覚えることが少なくてシンプルで他の言語の基礎になっていて
学んだことの応用が効いて実用性のある言語が他にあるか?
初心者が学ぶのに妥当だと思うが

346 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:09:52.37 ID:3jiwec3B.net]
むしろCこそ初心者に無駄が大杉

347 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:23:38.65 ID:13Hm1XjY.net]
C言語を覚えるのはCPUを覚えるのと大差無いから基本であるが難しい。
一人では全く何もできないコンピュータに1から仕事を教える物でもある。

だが、ラクしてjavaやperlに走る人とは付き合いにくい。

348 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:29:27.89 ID:4Ckw423u.net]
覚えることの多寡はやりたい目標で決まるから何とも言えん
電卓として使う程度ならどの言語だって大して変わらんし

349 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:37:38.39 ID:1VQKsEBj.net]
入出力がちょっと気を使うけど、
学習の重点となっているところが、入力後から出力前に集約できてれば良いんだが…

350 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:38:02.86 ID:LZEmbO/H.net]
派手なGUIゲームを作るならCは遠回りだろうけど
大学の講座とかで教えるならCを超える言語あるかな?
Javaとか?



351 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:44:41.36 ID:4Ckw423u.net]
それも講義の内容次第としか
工学系で高級なアセンブリとして使うならC

352 名前:デフォルトの名無しさん mailto:sage [2016/01/27(水) 23:50:57.65 ID:eULyfEEH.net]
実際問題JAVAとかC#は最初に教えるにしては覚えることが膨大すぎると思うよ
ボクシングとかアンボクシングとかどうやって教えればよいのか頭が痛いだろう
C++なんかもってのほかだしさ

>CPUを覚えるのと大差無いから基本であるが難しい

CPUに詳しくなって悪いことは無いよね、どんな言語にも応用が利くし
Cはいろんな言語のベースになっているからCを覚えると他の言語に展開しやすい
言語仕様も必要最小限でかつ、ぎりぎり実用可能なレベルで玩具というわけでもない

これがRubyとかなら、matzの実装について詳しくなる必要があるわけだが
こんなものを学んだところで有り難くない

353 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 05:14:25.23 ID:a6m1UVUK.net]
CPUというか、アセンブリ言語を少し知ってると
ポインタの理解あたりが容易になるのは間違いないね。

ただし、特定のCPUに詳しくなりすぎると
慣用表現から外れた独特な書き方を始める弊害もあったり。

・C慣用
for (i = 0; i < 10; i++)
・C++慣用
for (i = 0; i != 10; ++i)
・あるCPUのアセンブラ経験者
for (i = 10; i != 0; --i)

どのループも10回の繰り返しのはずだが、
今となっては3番目は本当に10回か自信がないわ。

354 名前:デフォルトの名無しさん [2016/01/28(木) 05:52:39.11 ID:OteWNMPZ.net]
・C++慣用
for (i {0}; i < 10; ++i)

355 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 06:04:06.09 ID:xn/xn1Lr.net]
>>354
出直してこい

356 名前:デフォルトの名無しさん [2016/01/28(木) 06:35:33.04 ID:OteWNMPZ.net]
ひぇっ!

357 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 06:51:25.56 ID:87VXcHuk.net]
>>352
> ボクシングとかアンボクシングとかどうやって教えればよいのか頭が痛いだろう
そんな特殊な機能は必要になった時に教えればいいだけだろ
バカなのか?

358 名前:プログラム初めてやってます mailto:sage [2016/01/28(木) 07:10:42.59 ID:v1B3KP04.net]
342>>
342さんありがとうございました!
書き込んでから自分でも考えてみていて、
こんな感じになってました

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>

/* 読み込んだ整数値の符号を判定 */

int main(void){

int a;

printf("整数を入力してください:");
scanf("%d", &a);

if (a < 0)
a = -a;
printf("絶対値は%dです");

return 0;
}

342さんのコーディングすごいですね!
参考になりました ありがとうございました!

359 名前:プログラム初めてやってます mailto:sage [2016/01/28(木) 07:11:49.38 ID:v1B3KP04.net]
余計なコメントはいってました・・・ 無視でお願いします・・・;

360 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 12:31:44.00 ID:a9w0Gglx.net]
そもそもプログラミングの基礎は人に習う物じゃない
参考書なりネットなりで一人で勉強するもんだ
基礎から教えて貰わなきゃ理解出来ない時点でプログラマーに向いてない



361 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 12:36:59.20 ID:mW8CPdak.net]
そうか?別に教わってもいいと思うが
でも応用効かないのは向いてないと思う

362 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 12:43:58.60 ID:U7RHxiIq.net]
生涯でただ一つの言語しか覚えられないという宗教的理由があるならC一択
そうでないならCからとか論外

363 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 12:51:39.77 ID:a9w0Gglx.net]
書き方が悪かった
一人で考えても分からない所を聞くのは別にいいと思うが、
授業とかで教えて貰うまで参考書があるのに手も付けない奴は向いてないと言いたかった

364 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 13:04:08.57 ID:mW8CPdak.net]
あまり勤勉なやつも向いてない気がするが
仕事にするんじゃなきゃ関係ないか

365 名前:デフォルトの名無しさん [2016/01/28(木) 15:21:07.00 ID:hWNVXd5g.net]
数学やプログラミングはいかに楽してそれを済ませるかがテーマな所ありますよね
面倒くさがりでズボラな人が怠惰を求めて勤勉に行き着く過程が王道では
だから教育としてはいかにそれが面倒くさいか、いかにそれをやらずに済ませるかを強調していく

366 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 16:30:44.07 ID:CWsUf0Ic.net]
初心者歓迎なんでね。

367 名前:デフォルトの名無しさん mailto:sage [2016/01/28(木) 22:38:32.61 ID:to2yFDLL.net]
Cから教えるのが論外とか言っている人は
他のどの言語から教えたほうが良いと思っているのか書くべきだよね

368 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 03:01:29.22 ID:bzmjGvNe.net]
>>363
向いていないというか興味が無いんだと思う
必須授業とかで無理やりやらされてる感じ

>>365
一度作ってしまえば後は利用して効率が上がるからなw
ずっと面倒か作る間だけ面倒で後楽かを選ぶだけで

>>367
ただ批判するだけじゃ誰でもできるからな

369 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 09:02:47.15 ID:x/sxD8ME.net]
(Lispの)Schemeを頭のいい人に教えるのには10分と掛からないってジョエルは言ってる。
Cは頭が良くても10分じゃ覚えきらん。仕様書からしてSchemeの10倍近く分厚いからな。2時間は掛かるんじゃねぇか?

370 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 09:49:39.15 ID:qombZsi/.net]
>>369
仕様書の厚さに比例するっていう観点は公平だと思うよ



371 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 10:14:08.59 ID:x/sxD8ME.net]
ふむ。

仕様書が分厚いからCを教えるのが論外だとするのなら、
手続き型系の言語で教えるのに適した言語はPASCALかLuaあたりになると思う。

Lua良いよLua。PASCALもね。

372 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 13:26:54.55 ID:cTI0Jdzp.net]
Cは概念だと思うけどね。ポインタと構造体を脳内でイメージできるようになったらおkかと。
後はリファレンスさえあれば、一生忘れる事はないと思うけどなぁ。

C++はもう底なしでw でもそれが楽しいのですが。

373 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 15:52:03.82 ID:9SCZR58b.net]
目的に最も近いと思われる言語を教えるのが初学者への配慮であって
入門に最も適した言語なんてのは幻想だと思う

374 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 17:58:02.16 ID:cTI0Jdzp.net]
今は専門学校ではjavaなのかな

375 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 18:08:01.54 ID:BAJfHtoc.net]
うちの専門学校では1年目はC、2年目にJavaだったよ

376 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 18:47:15.34 ID:i41mJkcJ.net]
うちは1年目はPASCAL、2年目にCをやり、3年目にSchemeとPrologを触り、4年目はCで研究したよ。
専門じゃなくて国立だけど。

377 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 19:53:42.72 ID:XYL4UGBK.net]
俺も一年目はPascalだったが
Pascal教えられていたときは激しくモチベが下がった
2年目にCになって無茶苦茶うれしかったよ

だって、Pascalは現場で使われてない言語だったから
何処でも使われてない言語を覚える苦痛と言ったらね
breakが有るくせにreturnが無いあたりも最悪だった
returnが無いから、どうにもこうにも関数の最後までいかないと
関数を抜けれないんだよ!
当然フラグだらけになるし、マジ鬼畜言語だと思った

その点Cは未だに世界中で使われている言語なわけで
だったら覚えてみようってなるし、モチベが上がるってものよ

378 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 20:07:57.52 ID:cTI0Jdzp.net]
ふむふむ Pascalはセミコロンの位置で頭が禿げるw
Delphiとか評判良かったんだけどねぇ。

379 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 20:57:35.02 ID:6a9kiPQ9.net]
>>378
式文とdo-while文にセミコロンを含むか、
各文の間は必ずセミコロンで区切るかの差であって、
どちらも一貫してるよ

380 名前:デフォルトの名無しさん [2016/01/29(金) 21:36:27.47 ID:KHfAKsC3.net]
ここは血迷ってAWKから入門させよう。ついでに正規表現も学ばせよう



381 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 21:56:42.92 ID:XYL4UGBK.net]
一貫してても使いにくかったら意味ねーんだわ

382 名前:デフォルトの名無しさん mailto:sage [2016/01/29(金) 22:13:16.22 ID:V57FZVNV.net]
じゃあ苦情の上がっていないJavaScript最強ってことだな

383 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 03:16:59.92 ID:d4C/IYFO.net]
マルチコアが当たり前になってGPGPUの手段が広がって低レベルが回帰の予感

384 名前:デフォルトの名無しさん mailto:sage [2016/01/30(土) 12:04:09.34 ID:qiIX3neU.net]
そこでllvm-irですよ

385 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/01/31(日) 18:52:32.63 ID:KGvneECt.net]
Cの文字列はヌル文字があるとそこで終わりだけど、
C++のstd::stringは長さを記録しているから、ヌル文字が
途中に来ても大丈夫!

ということはstd::stringはバイナリデータも扱えるんだ! 大発見だね!

386 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 18:56:36.30 ID:umKDphm1.net]
どうした急に

387 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 21:04:07.72 ID:kn/5LVuq.net]
今更すぎるな
単にC++11以前は連続した領域に確保されることが保証されてなかったからバイナリデータ置き場として使われてなかっただけ

388 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 21:13:17.94 ID:JH58iwLT.net]
>>385の知識が残念なのは言うまでもないとして
話を理解できない>>387はもっと哀れ

389 名前:デフォルトの名無しさん mailto:sage [2016/01/31(日) 23:23:19.06 ID:0VTupv6x.net]
自分の知識を総動員してドヤ顔してるんだからそっとしておいてやれ

390 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 00:16:08.05 ID:Jc+yiccs.net]
そう指摘されても何を理解できてないのか理解できてないからもっと哀れだわ
ハハッ



391 名前:デフォルトの名無しさん [2016/02/01(月) 01:45:26.45 ID:k88EDqNX.net]
ここは初心者にフレンドリーでハートウォーミングなインターネットですね

392 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 04:58:19.06 ID:wHu9vKIt.net]
>>390
>>386

393 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 17:08:19.81 ID:Ev74Df4F.net]
>>392のように日本語の文脈も読みとれない知能障害も
生きてて辛いだろうな

394 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 19:06:25.95 ID:aUqGS129.net]
アホが文脈読めとか笑える
スゲーいいこと書いたつもりなんだろうなぁ w

395 名前:デフォルトの名無しさん mailto:sage [2016/02/01(月) 21:07:47.33 ID:cp5cboQs.net]
最近の2chは過疎も納得の糞さだな。

396 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 11:36:29.11 ID:NTv/QStd.net]
>>387
まじ?
連続性保証されてると思ってたわ。
vectorは03で規格化されてたよね?
stringはされてなかったのか。
ま、いっか。

397 名前:デフォルトの名無しさん [2016/02/02(火) 22:25:20.39 ID:+WV++cRd.net]
助けてください
実数を2つ入力させて大小比較させるプログラム

codepad.org/JYV0bpuL

398 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 22:29:57.47 ID:7f7wf/mW.net]
elseの後にifが無いな

399 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 22:34:55.10 ID:7f7wf/mW.net]
あれ?
同じ環境で、同じ入力文字列から読み取った二つの浮動小数点数型数が厳密に一致するって仕様で決まってたっけ?

つまり、入力として
0.1 0.1
って入れた時に、scanf("%lf%lf", &a, &b);なりなんなりした後のa == bの値って処理系依存だっけ?

400 名前:デフォルトの名無しさん [2016/02/02(火) 22:58:44.04 ID:+WV++cRd.net]
>>398
通りました。ありがとうございます。
けど、最後のはifがなくてはならないのでしょうか。
ストラウストラップ自身のテキストに、最後はelseとなっているのですが。



401 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:00:44.47 ID:7f7wf/mW.net]
>>400
ストラなんちゃらってのは知らんけど
(a == b)が付くなら文法上ifが必要。
ifを省くなら括弧も省け。

402 名前:デフォルトの名無しさん [2016/02/02(火) 23:05:17.62 ID:+WV++cRd.net]
>>399
実際のところ、
「2つの数字の差が1.0/10000000未満である場合に、どちらが大きくてどちらが小さいかを
書き出した後、the numbers are almost equalと書き出すようにプログラムを変更する」
という問題で、これより前にint型をdoubleに変更しろという問題もあって、
a == b はここでは必要ないかもしれないです。

403 名前:デフォルトの名無しさん [2016/02/02(火) 23:07:14.24 ID:+WV++cRd.net]
>>401
あ。たしかに最後は条件式書いてないです。ありがとうございます!

>>ストラ
C++の設計者です。

404 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:11:00.17 ID:7f7wf/mW.net]
>>403
誰かと思ったらB. Stroustrupさんか。
カタカナって難しい

405 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:13:08.88 ID:RveVHAYz.net]
ハゲはa<bでもa>bでもなければa==bと考えてしまうほどモウロクしたんだろうか
最近の老衰っぷりを見るとかなり頭がヤバそうだが

406 名前:デフォルトの名無しさん [2016/02/02(火) 23:18:37.12 ID:+WV++cRd.net]
>>405
細かいエラーは最後の「小数が入力されてない」で一括りなんです。
入門書なんで。

407 名前:デフォルトの名無しさん mailto:sage [2016/02/02(火) 23:20:19.55 ID:7f7wf/mW.net]
>>406
多分そういうことじゃないと思う。

408 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 08:53:05.13 ID:6UPbxu8z.net]
>>399
その入力の結果
memcmp(&a, &b, sizeof a) で 0 は保障して欲しいところだな
処理系依存だとなんかキモイ

409 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:15:51.45 ID:JXLYa8UB.net]
うーむ
0.1 == 0.1
atod("0.1") == atod("0.1")
atod("0.1") == 0.1
ぜんぶ成立してほしい
誰か規格を解読して

410 名前:プログラム初めてやってます mailto:sage [2016/02/03(水) 10:19:42.77 ID:lWEagrs5.net]
前回は皆さん色々ご検討くださってありがとうございました。
皆さんにお礼も言わずに去ってしまったなと思っていたのですが、
その後、高度な(に私は見えました)話題が続いていたので水を差してはいけないと思って

どうしてもわからない事が出てきてしまって、また来てしまいました。

【二つの整数値を読み込んで、小さい方の数以上で大きい方の数以下の
 全整数を加えた値を表示するプログラムを作りなさい       】

という課題なのですが
インクリメント記述、全整数表示まではうまくいったのですが、
この後の合計値がどうしても出せません

ご助力お願い致します。

ここまでできたのですが…
https://ideone.com/THBj7S

多分恥ずかしいコーディングだと思います…



411 名前:プログラム初めてやってます mailto:sage [2016/02/03(水) 10:21:57.21 ID:lWEagrs5.net]
記述し忘れたので追記

2つの整数を入力し a以上b以下の全整数の和を求めなさいとの事でした

412 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:23:18.63 ID:Gb259GwX.net]
>>410
for (i = min; i <= max; i++) {sum += i;}

413 名前:プログラム初めてやってます mailto:sage [2016/02/03(水) 10:24:14.98 ID:lWEagrs5.net]
ありがとうございます!
でも、for文はまだ出てきてなくて、for文を使わずにと言う事でした

414 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:36:23.49 ID:JzoFZA2F.net]
またqの炎上学習法か?

415 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:37:46.94 ID:JXLYa8UB.net]
>>413
たとえば、1から1000の合計の計算式知ってれば、それを使う

416 名前:プログラム初めてやってます mailto:sage [2016/02/03(水) 10:40:20.13 ID:lWEagrs5.net]
?? 何かの本ですか? 
一応ある本の課題を見ています

今までに習ったのは簡単なprintfでの計算とif文do文なのですが

417 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:46:44.73 ID:XI3wSbIf.net]
>>409
atodと言うものが何物かは知らんが保証は無いんじゃね

ISO/IEC 9899:2011 5.2.4.2.4p6
The accuracy of the floating-point operations (+, -, *, /) and of the library functions in <math.h> and <complex.h> that return floating-point results is implementationdefined,
as is the accuracy of the conversion between floating-point internal representations and string representations performed by the library functions in <stdio.h>, <stdlib.h>, and <wchar.h>.

418 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:48:09.46 ID:XI3wSbIf.net]

5.2.4.2.4

5.2.4.2.2 Characteristics of floating types

419 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:51:30.15 ID:O/9tVwNc.net]
>>416
min = 5, max = 10, sum = 45て事なら
sum = ((min + max) * (max - min + 1)) / 2;
じゃあかんの?

420 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 10:53:19.38 ID:Gb259GwX.net]
>>416
forはwhileやdoを使って書き直せる。
for (A; B; C) D;
A; while (B) {D; C;}
A; do {if (B) {D; C;}} while (B);



421 名前:プログラム初めてやってます mailto:sage [2016/02/03(水) 10:55:10.44 ID:lWEagrs5.net]
>>416
416さんありがとうございます!できました!
皆さんもいろいろありがとうございました!

422 名前:プログラム初めてやってます mailto:sage [2016/02/03(水) 10:56:18.48 ID:lWEagrs5.net]
>>419さんでした;
>>416さんもありがとうございました!

423 名前:プログラム初めてやってます mailto:sage [2016/02/03(水) 10:58:29.06 ID:lWEagrs5.net]
>>420 420さんでした… ほんとにありがとうございました!

424 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 11:02:27.43 ID:JXLYa8UB.net]
>>417
正確性については実装依存だけど、毎回の同一性まではここでは触れてないね

425 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 12:55:54.71 ID:R1lQnZw2.net]
#include <cstdio>

int main() {
 printf("hello, world\n");

 return 0;
}


g++ (GCC) 4.8.2 を使っているんだが、上のソースがエラーなくコンパイルできる。
しかし printf() は std::printf() と書くべきじゃないかと思うんだ。
あるいは using で省略表記を明示するか。

この書き方でエラーにならないのはC++の規格通りなのか、
あるいはGCC独特の動作なのか教えてほしい。

またGCC独自だとしたら、コンパイル時にエラーとするオプションを知りたい。
(以前は -fhonor-std というオプションが使えたらしいが廃止されたみたい)

426 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 14:52:41.84 ID:1RubKd28.net]
なーる

427 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 14:54:41.83 ID:XI3wSbIf.net]
いつから>>425は規格通りとGCC独特の動作が
アンビバレンツなものであると錯覚していた?

428 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 15:53:30.47 ID:hvk9CpKQ.net]
なんでCは外部リンゲージでexternをつけるのにC++はつけないんですか?

429 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 16:41:54.73 ID:uEOUJl1K.net]
C++のコードからCを呼ぶ時に呼び出し規約の違いを明示する
CのコードからC++を呼ぶことはない

それに C/C++どちらも呼び出し規約が1種類ではないから
一部の関数はそういう指定がある

430 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 16:47:26.68 ID:XI3wSbIf.net]
>>428-429
>Cは外部リンゲージでexternをつけるのにC++はつけない
>CのコードからC++を呼ぶことはない

お前等の個人的なスタイルがさも普遍的であるかのように語られても



431 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 16:54:04.33 ID:1RubKd28.net]
そもそもデフォで外部リンケージを持つから extern はつけなくてもいんじゃねの?
外の変数を使う時はexternが必要ってことで。

432 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 16:56:12.19 ID:I+U+ZaiG.net]
>>425
C++の規格通りっぽい
cstdioとかはシンボルをグローバルにしてもいいししなくてもいいらしい

433 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:00:58.37 ID:XI3wSbIf.net]
>>432
へー、規格のどこにそんなことが

434 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:06:35.02 ID:I+U+ZaiG.net]
ちゃんとしたのに当った訳じゃないけど
stackoverflow.com/questions/10460250/cstdio-stdio-h-namespace
ここで引用されてた
Annex D (normative) Compatibility features [depr] states:

435 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:13:24.24 ID:j8SYABEm.net]
VS2015でも同じ結果でした

436 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:19:43.24 ID:XI3wSbIf.net]
>>434
そこに書いてあるのは「グローバル名前空間にも提供するかも知れない」なのだが
「cstdioとかはシンボルをグローバルにしてもいい」というのはどこから来たのか

437 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:22:04.36 ID:I+U+ZaiG.net]
どう違うのか分からない
間違ってたかな

438 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:31:35.42 ID:2Q1iapWx.net]
>>436
太字のここでしょ?
Every C header, each of which has a name of the form name.h,
behaves as if each name placed in the standard library namespace by
the corresponding cname header is placed within the global
namespace scope.

どこに「かも知れない」とかあるの?
behavesって断定してるんじゃない?

439 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:33:45.85 ID:6UPbxu8z.net]
RFC の MUST MAY SHULD みたいに整理してほしいわ

440 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:35:11.06 ID:XI3wSbIf.net]
>>437
std::でアクセスできることが義務づけられているかどうかが違う

>>438
それは>>425とは関係ないstdio.hの記述
その下の
It may also provide
ではないのか



441 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:41:25.46 ID:1RubKd28.net]
*.h → global空間で定義
c* → global空間とstd空間で定義

って事ですかい。

442 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 17:52:45.70 ID:R1lQnZw2.net]
>>434 情報ありがとう。
確かに cstdio は シンボルをstd名前空間に入れて
グローバル名前空間にも入れる「かもしれない」、と読めるね。

#include <cstdio> でstd修飾なしの printf() が使えるのは
規格通りでもあり、GCCがその挙動を選んだ、ということか。

しかしながら、グローバル名前空間に入れない環境もありうるし、
それで >>425 のコードがエラーになっても、これまた規格通りか。

うっかり std:: を書き忘れる癖があるので、
コンパイラがチェックしてくれると助かると思ったのだけれど。


>> ID:XI3wSbIf の人
有用が情報がなく挑発的なだけの投稿ばかりだね。
だからどうこうってわけじゃないよ。単なる感想として。

443 名前:425 == 442 mailto:sage [2016/02/03(水) 20:13:16.38 ID:R1lQnZw2.net]
>>441

Including cstdio imports the symbol names in std namespace and possibly in Global namespace.
Including stdio.h imports the symbol names in Global namespace and possibly in std namespace.

cstdio をインクルードするとシンボルはstd名前空間に入る(必ず)。
グローバル名前空間にも入るかもしれない(入らないかもしれない)。

stdio.h をインクルードするとシンボルはグローバル名前空間に入る(必ず)。
std名前空間にも入るかもしれない(入らないかもしれない)。


だと思われる。

444 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 20:19:16.88 ID:pejUVpHJ.net]
どちらを使うにしろ std名前空間を強要することはできないということになるのかな

445 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 21:13:49.98 ID:1RubKd28.net]
>>443
Cシンボルは鬼っ子で色々議論したけどこうなった。
って事なんだろな [Stroustrup2013] に書いてあるかな?

簡単な事だけど、かなり根が深いのかも。

実際は c関数を使う場合は 衝突回避のため、独自の名前空間の中で使用する事になるだろうから
問題ないのかも

namespace MyUtil{

  auto aaa=strlen("wahaha");

}
みたいな。

446 名前:デフォルトの名無しさん mailto:sage [2016/02/03(水) 22:55:02.36 ID:XI3wSbIf.net]
そうだな
G++が::absのバグを十数年間放置したぐらいには根が深いだろう

447 名前:445 mailto:sage [2016/02/04(木) 01:51:05.67 ID:ZGjCmtZ8.net]
何をアホな事を書いてるのだろうと反省。失礼しました。

448 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 19:27:08.85 ID:6dQTBxjx.net]
今日はQの自演による炎上学習法ナシ?

449 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 20:07:26.52 ID:ZGjCmtZ8.net]
自演だったのかorz

450 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 20:15:30.56 ID:M5WeNgYc.net]
namespace org::gnu::gcc {}が書けるようになるのはC++14からだっけ?
むしろ今までなんでこれが書けなかったのか、設計者に問い詰めたい。



451 名前:デフォルトの名無しさん mailto:sage [2016/02/04(木) 20:51:10.15 ID:cr9CcGXP.net]
いえ、C++14では書けません

452 名前:プログラム初めてやってます mailto:sage [2016/02/05(金) 08:05:08.38 ID:0uefFKkY.net]
ええっ…! それ私に向けられてるんです?
なんで??そうなるんです???
Qとかって人じゃないですし…
毎日ここ見てられませんよ;
自力で勉強しないと失礼だって思ったのになんでそんな事言う人いるんです?
もう来ない方がいいのでしょうか Qさんが誰かわかりませんが…

453 名前:デフォルトの名無しさん [2016/02/05(金) 08:05:39.03 ID:0uefFKkY.net]
勿論そのQさんとか言う人の自演じゃありません

454 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 09:12:32.23 ID:40iMBEwg.net]
>>452-453
ID:0ue... が Que のパチモン臭く見えるのが素敵。

455 名前:デフォルトの名無しさん mailto:sage [2016/02/05(金) 19:48:30.40 ID:7eaUpuXV.net]
>もう来ない方がいいのでしょうか

その通りだ
去れ

456 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 17:04:42.31 ID:nNZFJpww.net]
CのコードをC++に移植しながら開発を続けようと思ってるのだが、
C++のラムダとCのブロックどちらを使うべきだろうか。

457 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 17:17:22.70 ID:9hAEzh2Z.net]
ラムダ?

458 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 18:22:47.43 ID:VRPmATP2.net]
このレベルだとC++を使うことを避けるのが望ましい
ラムダとブロックは対比するものではないし
CからC++への移行の手段でもない

459 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:43:46.75 ID:EbqYVSkn.net]
エスパーしました。恐らく彼は初期化の話をしているのでしょう。初期化する際に何らかのリソースの確保を行う場合、初期化が済んだら即解放したいと思うことがあります。
ブロック内でリソースを確保しておけば、ブロックを抜けるときに自動的に解放されるのでこの意図を達成できます。

int i;
{
  なにかリソースを確保したり、いっぱい一時変数を使ってこれからiの値を決める;
  i = 求めた値;
}//用済みなった変数はここで即解放される

C++ではこのアナロジーとしてλ式を当てはめられます。

const auto i { [&...]()
  ->int{
    何かのリソースを確保したり、いっぱい一時変数を使ってこれからiの値を決める
    return 求めた値;
  }()
}

これで定数を初期化でき、且つ、初期化時に用いた一時記憶域は即解放できることになります。

460 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:57:21.06 ID:+sMp0qjD.net]
327さん、おはようございます



461 名前:デフォルトの名無しさん mailto:sage [2016/02/10(水) 23:59:35.45 ID:lc1dGjcs.net]
Q「(しまった)」

462 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 00:50:30.55 ID:ECJX98k8.net]
すまぬ。ここで言うブロック(Blocks)っていうのはClangの拡張の方のことだ。
C言語でクロージャーを実現するための機能なんだが、そういえばまだ標準になってなかったな。

463 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 03:25:55.80 ID:vUnRYzap.net]
くっ・・・

464 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 12:22:58.36 ID:qM+VfxEi.net]
難しいわ

465 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 13:15:50.37 ID:5TnQ2D6C.net]
>>459後半使う時どうするん

466 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 15:26:10.43 ID:Ijn2TjOB.net]
>>465
何を? 初期化に使用した資源?
後で使うならそれは使用済みではないということなので解放しちゃダメだから、ブロックの外のスコープで宣言するしかないのでは?

467 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 15:26:52.10 ID:Ijn2TjOB.net]
×使用済み
○用済み

468 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 15:34:20.94 ID:5TnQ2D6C.net]
>>466
returnが仮に10なら

const auto i { [&...]()
  ->int{
    何かのリソースを確保したり、いっぱい一時変数を使ってこれからiの値を決める
    return 求めた値;
  }()
}

int a;
a = i;でaに10が入る?

469 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 17:44:59.48 ID:R5nKPKgb.net]
そもそも論だけど

const auto &&i = [&]()->int{ return 10; }();

と書かないのは何故?

470 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 18:03:43.29 ID:rWlIZ3EB.net]
X x{init()};よりX x = init();という個人のスタイルがさも普遍的であるかのように話をされても



471 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 18:16:52.89 ID:R5nKPKgb.net]
{}の数が減ってインデントが少なくて済むじゃん
const auto &&i = []()->int
{
  return 0;
}();
好みの問題であるけどね

472 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 18:28:52.25 ID:9LpCQunf.net]
>>468
何故入らないと思うのか

>>469
C++11から初期化は{}で囲むことがお行儀良いとされる。良い癖をつけよう。= {初期化値}も可。

473 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 20:04:31.18 ID:9LpCQunf.net]
=を使わずに{}で囲むのみにしておけば、視認性抜群。一目でこれは代入でなく初期化なのだと判り脳の負担も軽くなる
int i = 10;

これからは
int i {10}, j {1}, k {0};
の時代だ。jやkの位置が改行されたりタブで距離を取っていてもこれなら一目瞭然だ

474 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 20:45:28.76 ID:rWlIZ3EB.net]
>>472
へー、ではなぜC++14のmake_uniqueには{}の初期化が使われていないのですか

475 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 22:38:27.35 ID:h5Y5qyZF.net]
推奨であって法律ではないからです

476 名前:デフォルトの名無しさん mailto:sage [2016/02/11(木) 23:39:53.97 ID:rWlIZ3EB.net]
へー、そうなのですか
スコットメイヤーの本に別の理由が書かれていたのですが騙されていたのですね

477 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 00:00:23.89 ID:VRvtWrj2.net]
すいません、全部適当言いました。許してください、何でもしますから

478 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 08:24:28.26 ID:pW7dPptS.net]
>>472
アスペか

479 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 13:18:35.65 ID:3nWopzdP.net]
アスペじゃありません、サイコパスです

480 名前:デフォルトの名無しさん mailto:sage [2016/02/12(金) 14:18:31.86 ID:tZNW1Sh6.net]
北川景子?



481 名前:デフォルトの名無しさん mailto:sage [2016/02/15(月) 19:28:14.77 ID:qDxZgP2m.net]
悪夢ちゃん
良作ドラマやったな

482 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 01:32:33.39 ID:iqNNo75Y.net]
ideone.com/ONsNMR

これがMSVC2015だとエラーになるのなんでなん?
回避方法知ってる人いる?

483 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 07:15:41.19 ID:wJ7D3Nu/.net]
true_typeのスペルミス
俺の環境では通った

484 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 08:11:34.25 ID:nCCZDf8c.net]
すぺるミスは見当たらない

485 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 14:37:40.64 ID:WNE9IDAH.net]
すべってます

486 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 17:38:29.31 ID:nE46Ot5u.net]
ラッパー関数を作成する場合、値渡しと参照渡し、どちらの方法が一般的なのでしょうか?

void append(T o) { vector.push_back(o); }
void append(const T& o) { vector.push_back(o); }

boostのコードで値渡しの方法を見かけたのですが、
(www.boost.org/doc/libs/1_60_0/boost/assign/std/vector.hpp)

push_back内で行われるコピーを考えると二重のコピーになってしまう気がします。
参照を使わない方法にはなにか意図的な物があるのでしょうか。
またはC++では値渡しが基本ということなのでしょうか。

487 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 17:43:40.27 ID:3V9H/1fh.net]
テンプレートで、しかもinlineだから値渡しにしても良いという判断なんなんじゃないかな

488 名前:デフォルトの名無しさん mailto:sage [2016/02/16(火) 22:16:20.17 ID:eGMzofhZ.net]
>>482
type_traitsヘッダを明示的にincludeしなきゃだめとかじゃないのか

489 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 00:02:13.91 ID:BJJMKH5P.net]
>>488
実際のコードではincludeしてたしそうでもないなー

webcompiler.cloudapp.net/
ここでコンパイルすると通るけど
新規プロジェクトでWin32コンソールアプリケーション選んで同じコードコピペしてもエラーになるわ・・
俺のVisual Studio 2015 Communityがおかしいのか・・・?

490 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 00:47:09.77 ID:BJJMKH5P.net]
まさかと思いUpdate 1当てたら通るようになりました。
どうもありがとうございました。



491 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 01:24:40.77 ID:1H9n+Lj4.net]
>>486
オブジェクト変更しないならconst参照でいいと思うけどなぁ

492 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 01:37:30.39 ID:N1klTUFY.net]
そのboostのやつは要素が基本形であることしか考えてないんだろ
だから安易に値渡しになってる

493 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 03:30:55.57 ID:1UNcQaMi.net]
せやろか
Boostに採択されるような手練れがそんな甘い設計をするのだろうか?

494 名前:デフォルトの名無しさん mailto:sage [2016/02/17(水) 07:43:08.25 ID:MVw4Ur3f.net]
boost.assignの使いみち考えれば基本型しかなくても不思議はないな
まぁでも、call_traitsみたいなやつくらいかましてくれても良いような気がするね
forkして直すか、issueあげれば?

495 名前:デフォルトの名無しさん mailto:sage [2016/02/18(木) 12:57:49.40 ID:cxWjsl/x.net]
目的による
ビットフィールドを切り捨てていいならforwarding-reference一択
そうでなければ値






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

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

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