14/04/05 09:00:48.11 4p3tjfYN
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。
前スレ
C++相談室 part111
スレリンク(tech板)
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.90【環境依存OK】
スレリンク(tech板)
次期規格C++1yはこちら
C++14/C++1y
スレリンク(tech板)
■長いソースを貼るときはここへ。■
URLリンク(codepad.org)
URLリンク(ideone.com)
【重要】
hogeは禁止です。使用しないでください。
万が一hogeが書き込まれても、スルーしてください。
相手にするとあなたも荒らしと同じ扱いになります。
2:デフォルトの名無しさん
14/04/05 12:05:11.32 LKf4adEN
ヘムレンさんポジションのザコが暴れるスレ。
見地と良識を備えたムーミンパパは居ない
ちなみにヘムレンは種族の呼称
3:デフォルトの名無しさん
14/04/05 15:36:20.07 kY2Ixj/W
↑荒らしは無視してね
4:デフォルトの名無しさん
14/04/05 15:40:04.06 PxtUisja
STLつかうと一気に実行ファイルサイズが10倍に?!
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
C1010: プリコンパイル済みヘッダーの検索中に予期しない EOF を検出しました。
とかいうエラーが出るんだけどこれってどうすればいいの?
#include <stdafx.h>
後死ね。
言葉が悪いな。それで教えているつもりか。
まぁヒントぐらいにはなったな。
うむごくろう。
5:デフォルトの名無しさん
14/04/05 17:05:43.48 LokGB3M7
----テンプレここまで-----
6:デフォルトの名無しさん
14/04/05 21:12:55.53 EOtAE3K1
みなさん、hoge++スレへようこそ。楽しくhoge++ね
7:デフォルトの名無しさん
14/04/05 21:14:42.64 4p3tjfYN
↑荒らしは無視してね
8:デフォルトの名無しさん
14/04/05 21:21:32.46 EZLhmswD
書いてる>>1自身が無視できてない
9:デフォルトの名無しさん
14/04/05 21:21:34.47 x1RB96gi
>>4
正直もうBorlandとか誰も使ってないし
VC++でさえ使う人減ってるだろ
10:デフォルトの名無しさん
14/04/05 21:36:26.22 N4PVE6y4
前スレ>>997
URLリンク(ezoeryou.github.io)
11:デフォルトの名無しさん
14/04/05 21:38:28.05 EOtAE3K1
>>9
MSが色々提供しているからね。
いまさら化石MFCではじめるWINはないよって感じあるからな
12:デフォルトの名無しさん
14/04/05 21:38:29.05 x1RB96gi
>>10
普通に間違えて覚えてた。C++14には入らないのか・・・
13:デフォルトの名無しさん
14/04/05 22:51:57.97 4PQFLBxx
>>1乙
14:デフォルトの名無しさん
14/04/06 02:12:19.15 zroYmyxw
GUIはC#で、C++でDLLしてP/Invokeというのがいいな
しかしSTLとDLLの相性の悪さは泣ける
中だけで使うのなら問題ないけど
15:デフォルトの名無しさん
14/04/06 08:34:57.85 bs2xlTJg
GUIはC#でWPF、ピンボケするのはWindowsAPIだけ、自前のネイティヴコードはC++.NetでラッピングしたDLLにする。だろ?
16:デフォルトの名無しさん
14/04/06 13:40:34.99 UEWCeO6y
未だにSTLみたいな前世紀の化石ライブラリを使うようなプログラムは
C#などと組み合わせるべきでない
17:デフォルトの名無しさん
14/04/06 14:15:14.68 nZeav+Zp
コンテナすら使わないプログラムならわざわざC++で実装する必要ないもんな
18:デフォルトの名無しさん
14/04/06 14:15:56.08 Rj7fzTnd
「ヘッダはコンパイラが提供するものなのであなたが作らないでください」
「STLは前世紀の化石ライブラリ」
----テンプレここまで-----
19:デフォルトの名無しさん
14/04/06 14:25:42.40 NUYJ8BJR
「ヘッダーという用語は規格上は処理系が提供するものを指すので、.hファイルの意で使用すると荒れる恐れがあります」
→インクルードファイルと言うと回避できます
「昔存在したSTLが規格に吸収され、規格には当該部分にSTLという識別がなくまた当時のSTLとは完全に同一でないことから、現規格のstd::vector等をSTLと呼ぶと荒れる恐れがあります」
→標準ライブラリのvectorと言うと回避できます
----テンプレここまで-----
20:デフォルトの名無しさん
14/04/06 14:47:44.46 Rj7fzTnd
>>19乙
21:デフォルトの名無しさん
14/04/06 14:53:42.00 k991ba7o
>STLとDLLの相性の悪さ
クラステンプレートはクラスのテンプレート
であってクラスじゃないからねぇ。
そもそもライブラリ境界を跨いで
クラスオブジェクトを渡すなよ。
22:デフォルトの名無しさん
14/04/06 15:55:46.52 Cunr6Uuj
>>21
でもさ、C#というGUIのガワを被せて、肝心の中身はC++の利点であるコンテナを
使いたいって事は多いだろ?
今のC++の仕様ではどうしても一度DLL内で計算した結果をXMLなどにシリアライズ出力
して受け渡しするという不格好な方法しか取れない
そう言うと「C++はC++、C#はC#で別々に使えよ、同時に使おうとするのが間違い」って
なっちゃうけどな
その通りだけど
C#は基本的にMarshalなアンマネージドオブジェクトは異質の物と見てるもんな
23:デフォルトの名無しさん
14/04/06 16:09:09.36 De/moLbp
COMでおk
24:デフォルトの名無しさん
14/04/06 16:23:04.58 Cunr6Uuj
COMはやめろよ
もう古すぎる
25:デフォルトの名無しさん
14/04/06 16:35:17.65 k991ba7o
>>22
>今のC++の仕様ではどうしても一度DLL内で計算した結果をXML
えっ、C++側で.NETのラッパーに
変換するんじゃないの?
26:デフォルトの名無しさん
14/04/06 16:41:02.80 De/moLbp
C++使っててCOMが古いとかハッハワロス
27:デフォルトの名無しさん
14/04/06 19:27:10.04 dVVzxz29
COMを使わなくて済むのが.NETの強みなんだが・・・・
28:デフォルトの名無しさん
14/04/06 19:47:04.04 bs2xlTJg
COMの開発は管理者権限が必須なのが前時代的だな。
29:デフォルトの名無しさん
14/04/06 19:51:18.91 dVVzxz29
ま、確かにP/Invokeはお世辞にも使いやすいとは言えないな
「あんまし使うなよ」って事か
30:デフォルトの名無しさん
14/04/06 20:02:39.30 jwbJTyGo
.NET Framework が native 化できることで、
このあたりのもどかしさはなくなるんだろうな
もう C++/CLI 書きたくないお(;ω;)
31:デフォルトの名無しさん
14/04/06 20:09:18.33 0az8Nuyl
>>30
C++/CLIなんて罰ゲームみたいなもんだな
C++の部分だけ分離して呼び出し側でマーシャリングとか出来なかったのか
32:デフォルトの名無しさん
14/04/06 21:27:30.07 TyAP6UD/
COMはRTで使われてるし全然現役
33:デフォルトの名無しさん
14/04/06 21:29:23.29 GqoT/9Em
それは「実行バイナリがマシン語で書かれているから
マシン語のプログラムは現役」
並のミスリードだな
34:デフォルトの名無しさん
14/04/06 22:53:39.67 XLm+xFbR
普通にC++語るスレになっててなにより
35:デフォルトの名無しさん
14/04/06 23:01:13.82 0dGMoKg8
いつぞの荒らしも飽きたかどっか行っちゃったみたいね
36:デフォルトの名無しさん
14/04/06 23:03:47.01 +ho/eqBK
荒らしが多すぎてもう
どの荒らしのことなのかわからない
37:デフォルトの名無しさん
14/04/06 23:48:49.57 wtpLSJbx
普通DCOMだよね~
38:デフォルトの名無しさん
14/04/07 00:17:21.81 Oe2r/gE1
にゃんぱす!
39:デフォルトの名無しさん
14/04/07 00:19:41.22 A0FUyXAk
>>38
にゃんぱすぅ~
だろ
40:デフォルトの名無しさん
14/04/07 00:44:27.14 rR+HEjyU
>>33
マシン語並みに空気みたいな存在になったと言うことだな
41:デフォルトの名無しさん
14/04/08 02:53:30.05 xaBD9l1I
C++ は MS がすべてじゃないし
どこぞの糞仕様のための言語じゃないし
42:デフォルトの名無しさん
14/04/08 02:54:34.18 xaBD9l1I
マジでおまいらのワールドしょぼすぎ
43:デフォルトの名無しさん
14/04/08 13:43:30.23 WIUCzLV5
>>42
なかなかいい文句だ
それを出だしに使って140字以内でキレのあるあおり文にまとめてくれ
44:デフォルトの名無しさん
14/04/08 17:31:19.44 qjagiBPa
しつもんです。
可搬性のある、C++のソースファイル名に使用可能な文字の制限ってどなたかわかりますか?
45:デフォルトの名無しさん
14/04/08 17:36:28.45 DhHmBmSp
>>44
そうだな
#や@といった機種依存文字を含まず
アルファベットの大文字小文字混在無しで
ベース名8 文字以下なら安心だろう
46:デフォルトの名無しさん
14/04/08 17:54:39.78 xaBD9l1I
MS-DOSとか糞環境乙としか言えない
47:デフォルトの名無しさん
14/04/08 18:25:20.64 Lnp7L6Cz
std::wregexで
括弧やドットを正規表現で使いたいのですがうまくエスケープできません。
¥x28と書いてもデバックでエスケープされてないようです。
このような場合はどうしたらいいのでしょうか
48:デフォルトの名無しさん
14/04/08 18:27:57.56 pggqH0pG
L"\\. \\("
これでエスケープされるだろ?
49:デフォルトの名無しさん
14/04/08 18:28:55.14 xaBD9l1I
元が \( なら 文字列で書くと "\\(" だろ
C言語板で聞けよ
50:デフォルトの名無しさん
14/04/08 18:36:52.48 9wIzdaaz
C言語板なんかあったっけ?
51:デフォルトの名無しさん
14/04/08 18:55:47.34 xaBD9l1I
板とスレ間違えただけだし 些細な問題を指摘するところがまるでコンパイラみたいだな
スレリンク(tech板)
52:デフォルトの名無しさん
14/04/08 18:55:54.31 Lnp7L6Cz
>>48-49
ありがとうございます。
53:デフォルトの名無しさん
14/04/08 19:19:18.55 9wIzdaaz
>>51
お褒めにあずかり光栄です
54:デフォルトの名無しさん
14/04/08 21:01:00.65 CrCqLw7U
正規表現に普通の文字列とか
なに馬鹿なことやってんの
LR"unko(.\(うひょ\))unko"
55:デフォルトの名無しさん
14/04/09 17:57:34.72 YDjcaoef
URLリンク(ideone.com)
randomクラスでshuffleしたいのですが、どうしてもエラーが取れません
どこが間違っているのでしょうか?
56:デフォルトの名無しさん
14/04/09 18:13:15.84 p7hjUAuw
>>55
URLリンク(ideone.com)
57:デフォルトの名無しさん
14/04/09 19:53:21.80 9B6L1ty9
>>56
ありがとうございます
結局uniform_int_distributionとかかませたのがまずかったみたいですね
58:デフォルトの名無しさん
14/04/09 20:11:21.10 TDs0SH97
>>54
覚えたてで嬉しいのはわかったからそこらじゅうに貼るなよ
59:デフォルトの名無しさん
14/04/10 00:54:20.87 QbNxa+16
>>58
何年も前に出来た規格に対して
覚え立てとか何を言ってるの
60:デフォルトの名無しさん
14/04/10 07:48:32.68 /AIMsHz9
リテラルは R"aaa[xxx]aaa" と書くこともできるのか?
それとも亜種がいろいろとあるのか?
URLリンク(cpplover.blogspot.jp)
61:デフォルトの名無しさん
14/04/10 08:04:37.36 1X5BHIzm
>>59
> 何年も前に出来た規格
だからいちいち貼る必要なんかないだろ
バカなの? (w
62:デフォルトの名無しさん
14/04/10 12:23:25.00 uETN8HVi
>>60
>R"aaa[xxx]aaa" と書くこともできるのか?
できません。
>亜種がいろいろとあるのか?
ありません。
63:デフォルトの名無しさん
14/04/10 12:45:02.18 IJYcxngx
『"(』と『)"』が基本形のペアで『"』と『(』、『)』と『"』の間に同じ文字列を入れてもペアになる
64:デフォルトの名無しさん
14/04/10 18:09:57.16 M6lNLtoT
すいません、イテレータをちゃんと理解できてない初心者なのですが
for( itr = tmpList.begin(); itr != tmpList.end(); itr++ ){
# 処理1
}
for( itr = tmpList.begin(); itr != tmpList.end(); itr++ ){
# 処理2
}
こんな風に書いたら2回ループしてくれるのかなと思ったら、1回目しか実行されていないようなのですが
2回やるのはどうしたらよいのでしょうか
65:デフォルトの名無しさん
14/04/10 18:14:30.75 fXdw7HlU
URLリンク(ideone.com)
2回できてるけど
それだけじゃなんとも
66:デフォルトの名無しさん
14/04/10 18:34:41.66 M6lNLtoT
ちょっと表現するのが難しいところなんですが
multimapのイテレータなんですが
人が書いたソースを改造していて、
67:デフォルトの名無しさん
14/04/10 18:37:18.80 fXdw7HlU
全部ソース張れよ
どうせ処理1の中で余計なことをしているんだろう
68:デフォルトの名無しさん
14/04/10 18:39:25.60 x8L/6Xjd
こういう質問者ってなんでwandboxとかに全ソース貼らないんですかね
貼ればわかるさ
69:デフォルトの名無しさん
14/04/10 18:50:16.62 M6lNLtoT
あ、ごめんなさい。
そもそもこのmapに値がうまく入ってないっぽいです。
勘違いです。お許しを
70:デフォルトの名無しさん
14/04/10 19:27:41.41 iUo3Wr7t
詫びは金券で
71:デフォルトの名無しさん
14/04/10 20:44:06.14 PllVVChP
>>68
C++はゆとりが使う言語
ゆとりにそんな高度のこと要求するってアホじゃない
72:デフォルトの名無しさん
14/04/10 21:47:25.73 x8L/6Xjd
ゆとり駆動開発
73:デフォルトの名無しさん
14/04/11 01:19:46.96 Q4Xkm7jG
intに32bitもいらないけどint8_tにしたら速くなる?
74:デフォルトの名無しさん
14/04/11 01:51:08.02 mOd4AtLz
>>73
単発でのアクセスなら速くはならない。変わらないか逆に遅くなることもありえる
多くの値に短期間でアクセスするなら総合的に速くなることはありえる
75:デフォルトの名無しさん
14/04/11 02:04:20.33 nkEZv0su
i80386 搭載パソコンよりも昔のものでないと早くはならないな
大昔にタイムスリップでもしてみればいいよ
76:デフォルトの名無しさん
14/04/11 02:09:41.30 Trhukh5Q
おまえら勝手に前提条件を絞るなよ
毎秒2億個のデータのメモリI/Oを行う処理だったら速くなるだろ
77:デフォルトの名無しさん
14/04/11 03:07:17.29 LKdcLyi6
stlコンテナが返すsize_tに64bitもいらねぇと思うのは俺だけ?俺だけ
78:デフォルトの名無しさん
14/04/11 07:45:57.86 UOPe7CML
SSEとか使えば早くなるんじゃないかな
79:デフォルトの名無しさん
14/04/11 08:42:40.24 2sIhZgp+
>>76
メモリと言うのが最近のpcに普通に搭載されているRAMの事なら、恐らく遅くなると思う
メモリマップされたハードウェアへのアクセスの事を言ってるなら、速くなるならない以前の問題かなと思う
>>73
つまり環境ややりたい事次第としか言えない
基本は実測あるのみ
80:デフォルトの名無しさん
14/04/11 11:38:15.71 xrw2TyXG
>>76
そういうお前が絞ってんだけどな
81:デフォルトの名無しさん
14/04/11 12:47:05.09 xoOT/T6O
>>80
まずは論理的な思考ができるようになってから出直した方がいいよ
82:デフォルトの名無しさん
14/04/11 13:35:34.52 xNOhzDQj
おまゆう (w
83:デフォルトの名無しさん
14/04/11 21:16:29.87 k/psiUhm
論理的な思考はゆとり言語使いには不可能だよね
84:デフォルトの名無しさん
14/04/11 21:53:05.05 YcPYvmq+
うむ、AVIVAで勉強して出直してこい
85:デフォルトの名無しさん
14/04/12 01:21:09.61 zpUkpEx/
ドモルガンの法則
86:デフォルトの名無しさん
14/04/12 14:21:35.87 tsoK51Gy
関数にするか俗にいう関数オブジェクトにするかの
決定基準を教えてください。
87:デフォルトの名無しさん
14/04/12 14:33:05.67 n/AZTTd0
関数オブジェクトにする。
88:デフォルトの名無しさん
14/04/12 15:09:03.89 tsoK51Gy
ありがとうございます。
関数を作らないのがC++の流儀なのですね。
89:デフォルトの名無しさん
14/04/12 15:25:15.43 +b8z6TLB
んなことない
90:LILIN
14/04/12 17:53:04.29 3XpcVmBg
URLリンク(qiita.com)
ディクス・ファイルへの入出力で日本語が使えるように書いてみたんだけど
[i/o]streamのストリーム・バッファは1バイトの特定しかないの(´・ω・`)?
なんかスタンダードな方法ってる?basic_iostream を多バイトで特定するとか。
91:デフォルトの名無しさん
14/04/12 18:03:57.12 TFvrScmT
URLリンク(ideone.com)
日本語使えるだろ
92:LILIN
14/04/12 18:34:00.11 3XpcVmBg
よくわからないんだけど、wostream, wistream, istream, ostream, char wchar_t
これらはあくまでプログラム内部で1バイトや2バイト固定長で、ストリームのバイト幅は1バイトしかないでおk?
複数バイトをディクス・ファイルに特定の符号化でエンコーディングした文字コードを文字として出力するときも1バイト単位を処理する必要あり?
もちろん出力先はコンソール・インタープリタではなく。
93:デフォルトの名無しさん
14/04/12 18:54:46.05 djgLKFxC
>>86
・関数が状態を持つとき
・関数を引数として渡した先でのインライン展開を期待するとき
・ラムダ式を使いたいとき
は関数オブジェクトにする(になる)
94:デフォルトの名無しさん
14/04/12 18:58:35.11 TFvrScmT
>>92
1バイト単位を処理の主語はなんだ?
誰が1バイト単位を処理するんだ?
95:デフォルトの名無しさん
14/04/12 20:16:07.56 kaC5V1Cc
大抵の機械のシステムコールあるいはAPIにおいて、入出力はバイト単位で行われます。
従って、それらを利用する大抵のライブラリも、バイト単位の入出力を利用しています。
大抵の環境において、C++標準ライブラリはバイト単位の入出力を利用していますが、
codecvtというクラスによって、文字符号化の変換やwchar_tへの変換などを行っています。
C++のストリームは、このcodecvtを利用しています。
LILIN様は、まず、codecvtについて調べてみてはどうでしょうか?
あるいは、ロケールというキーワードも参考になるかもしれません。
「そのくらい知ってる!」という場合は、申し訳ありません、早とちりでした。
96:デフォルトの名無しさん
14/04/12 20:16:26.65 WnsvY9aE
>>93
アセンブラで説明してくれ
97:デフォルトの名無しさん
14/04/12 20:18:36.80 kaC5V1Cc
じゃあ僕は、トリコで説明してほしいです。
98:LILIN
14/04/12 21:11:39.73 3XpcVmBg
>>95
ありがとうm(_ _)m
99:デフォルトの名無しさん
14/04/13 10:26:55.87 N/BcLaK6
クラス変数で、
static const int a=1;
がなんで宣言であり定義とどこがちがうんですか?
クラス変数で
const int a;
と定義してコンストラクターで初期化するのと
上の方法の違いってなくないですか?
constでメモリが参照されなければ最適化で変数は値に置き換えられるじゃないですか。
staticをつける意味はなくないですか?
100:デフォルトの名無しさん
14/04/13 10:35:39.32 +E56QUWv
インスタンス2つ以上作ってから言え
101:デフォルトの名無しさん
14/04/13 10:40:29.73 +SJW0QdK
>>99
出来るならそれでいいんじゃね
102:デフォルトの名無しさん
14/04/13 11:29:02.12 N/BcLaK6
>>100
作るとどうなりますか?
>>101
できるんですか?
103:デフォルトの名無しさん
14/04/13 12:20:48.14 g6kjuewa
>クラス変数で
>const int a;
>と定義してコンストラクターで初期化するのと
初期化とは言えない。
constだからコンストラクターでは代入できない。
constじゃなくする場合、クラス変数なのにインスタンス作るたびに値が変化しうるけど、それで目的にあってる?
104:デフォルトの名無しさん
14/04/13 12:51:07.94 N/BcLaK6
えっ,コンストラクターの横についてる:の後ろのやつならできるでしょ
105:デフォルトの名無しさん
14/04/13 12:54:16.29 ZK38pnpA
>>99
まず>>100の通り実体の数が違います。
あと前者の方が最適化されやすい。
>>103は何か勘違いしてる。
106:デフォルトの名無しさん
14/04/13 14:36:26.43 N/BcLaK6
>>105
実態の数は両方とも0だと思いますけど
あと、一番初めの質問も教えてください。
static const int a=1;が宣言であり
定義ではないということです。
107:デフォルトの名無しさん
14/04/13 14:46:15.01 N2UMgO6H
メンバ変数での
static const int は特別でコンパイル時定数になります
108:デフォルトの名無しさん
14/04/13 14:58:37.13 g6kjuewa
>>105
>>99はクラス変数でって言ってるんだぞ?
109:デフォルトの名無しさん
14/04/13 15:03:28.42 Eo6+lIk6
>>106
定義でないという根拠は?
9.4.2段落2から読んだのならそこは
「チョーンジン=犯罪者ではない」と同じで
チョーンジンに犯罪者がいないと言ってるわけではないと思う。
段落3を読む限りstatic constは定義では
110:デフォルトの名無しさん
14/04/13 15:29:45.13 N/BcLaK6
>>109
effective C++に定義ではなく宣言ですと書いてある。
111:デフォルトの名無しさん
14/04/13 15:39:19.06 N2UMgO6H
URLリンク(ideone.com)
これが違いだ
分かったか?
これだけのことなのに
112:デフォルトの名無しさん
14/04/13 15:57:46.28 N/BcLaK6
sizeof(test2)をやるとaのアドレスを参照するから
メモリーが確保されるってことですか?
113:デフォルトの名無しさん
14/04/13 16:02:35.92 g6kjuewa
>>111
で、
君が>>107で言ってる「メンバ変数でのstatic const int」ってのはどれのことだ?
114:デフォルトの名無しさん
14/04/13 16:03:44.45 N2UMgO6H
>>113
5行目
115:デフォルトの名無しさん
14/04/13 16:51:27.64 g6kjuewa
>>114
クラス変数のことをメンバ変数とか呼ぶから混乱するんだろ
116:デフォルトの名無しさん
14/04/13 16:54:02.69 LghAmP6/
>>115
混乱してるのはお前だろ…
javaじゃないんだから用語はメンバ変数で正しい
117:デフォルトの名無しさん
14/04/13 16:57:29.50 g6kjuewa
>>116
おおもとの>>99がクラス変数って言ってるんだからそれに沿えばいいだろ?
そもそもstaticのあるなしが問題になってるんだから呼び分けろ。
118:デフォルトの名無しさん
14/04/13 17:00:06.00 N2UMgO6H
混乱とか言ってるのID:g6kjuewa だけなんだが
なんで突っかかってきたんだ?
119:デフォルトの名無しさん
14/04/13 17:06:05.85 g6kjuewa
1.クラス変数という言葉はc++で言うstaticメンバ変数の意味で使われる
2.もとの>>99もその意味で使ってるようだが、ちょっと間違ってる
3.>>100でその点を指摘した
という流れだが?
120:デフォルトの名無しさん
14/04/13 18:26:10.37 rD/qzpQw
>>119
もともとの>>99を読んだら
グローバル変数や自動変数でなくメンバー変数の意と
して使っているとわかりそうなものだが。
>1.クラス変数という言葉はc++で言うstaticメンバ変数の意味で使われる
お前の脳内ではな
121:デフォルトの名無しさん
14/04/13 18:51:23.38 g6kjuewa
>>120
>>1.クラス変数という言葉はc++で言うstaticメンバ変数の意味で使われる
>お前の脳内ではな
「クラス変数」とか「インスタンス変数」言語を特定しないは一般的な用語であり、
C++においてはそれぞれ「staticメンバ変数」と「メンバ変数」と解される。
・・・と理解していたが、それは俺の脳内だけなのか?
もし違ってたら謝ります。
122:デフォルトの名無しさん
14/04/13 19:00:10.00 g6kjuewa
読み返してみた。
>>99が「クラス変数」と「インスタンス変数」を使い分けて質問してるもんだ、と頭から思い込んでいた。
すまんかった。
123:デフォルトの名無しさん
14/04/14 04:44:21.59 zT5aQk31
>>121
うむ、Javaの知識と感覚でC++の質問に答えたお前が悪い
メンバイニシャライザも知らんかったみたいだし
124:デフォルトの名無しさん
14/04/14 06:18:59.60 ylD7aR0F
参考までにJava言語仕様8.1.6には
クラス変数などという用語は出てこない
125:デフォルトの名無しさん
14/04/14 06:30:03.60 ylD7aR0F
ちなみにstatic Fields(8.3.1.1)がJavaの用語。
対する用語は「インスタンス変数」なんだよな。
『A field that is not declared static (sometimes called a non-static field) is called an instance variable』
126:デフォルトの名無しさん
14/04/14 06:32:31.54 zT5aQk31
>>111
それは静的メンバが含まれないってだけ
URLリンク(ideone.com)
>>110
宣言とは、その名前の何かを使うというだけの記述
静的メンバ変数は、宣言だけでは定義となりえないので、
外部での実体の定義が必要になる
そしてconstな静的メンバに限り、初期化子(初期値)を付けて宣言でき、
この場合、定義無しだとコンパイル時定数となるが、実体は無い
URLリンク(ideone.com)
127:デフォルトの名無しさん
14/04/14 07:22:24.24 zT5aQk31
重要な事を忘れていた
ただのconstのメンバ変数でも、実体が必要になる
コンパイル時定数となりうる物は、
この実体がなくても良い、という部分が決定的に異なる
128:デフォルトの名無しさん
14/04/14 08:13:35.96 n9bi2Qgd
>>126
>この場合、定義無しだとコンパイル時定数となるが、実体は無い
それは規格のどこから読みとりましたか?
129:デフォルトの名無しさん
14/04/14 08:46:57.77 /ePxSNZc
9.4.2 p3
> If a non-volatile const static data member is of integral or enumeration
> type, its declaration in the class definition can specify a
> brace-or-equal-initializer ...
> ... The member shall still be defined in a namespace scope if it is
> odr-used (3.2) in the program and the namespace scope definition shall
> not contain an initializer.
130:デフォルトの名無しさん
14/04/14 08:53:18.11 zT5aQk31
>>128
先に規格のバージョンを明記してくれ
131:デフォルトの名無しさん
14/04/14 08:59:53.32 zT5aQk31
すまん、レス見えてなかった
132:デフォルトの名無しさん
14/04/14 09:09:37.16 kTPbyAAA
規格が改訂されたばかりというわけでもないのに
バージョンを示せとはこれ如何に
133:デフォルトの名無しさん
14/04/14 09:35:50.91 zT5aQk31
>>132
昔の規格を言ってるのかなと思ってさ
134:デフォルトの名無しさん
14/04/14 12:20:31.03 TPz1PbMj
クラス変数とかインスタンス変数とかって
java用語じゃなくてUML用語ではなかった?
135:デフォルトの名無しさん
14/04/14 21:40:51.85 ViqegF57
>>126
俺、constな静的メンバって使ったことはないと思うけど特殊なんだな
定義無しだと#defineと同じようになるのか。メモメモ
136:デフォルトの名無しさん
14/04/14 21:54:30.89 zBaLgPlx
じつは>>126=>>135
137:デフォルトの名無しさん
14/04/14 22:08:41.76 TPz1PbMj
>>135
それは少々珍しいと思う。
テンプレートパラメータにint Nがあって
static const int value = N;
とやって公開するのは結構ある。
138:デフォルトの名無しさん
14/04/15 06:54:06.40 LKf0w0dM
>>134
入門 UMLしか読んでないにわかですが
UMLだと、クラスと対になるのはオブジェクトで、
インスタンスという用語は、ある抽象概念に対する具象概念を指すものだったはず
例: クラスのインスタンスはオブジェクト、関連のインスタンスはリンク
139:デフォルトの名無しさん
14/04/15 11:47:27.55 Kk2d82mo
>>134
クラス変数もインスタンスも変数も一般的に
使われる用語だしwikipedia等にも出てるけど、
UMLではより一般的にクラス属性`/インスタンス属性
って呼んでると思う。
140:デフォルトの名無しさん
14/04/15 14:32:57.64 MSpw9Zgl
まとめると次のようなことですか?
constなインスタンス変数はアドレスを参照しない限り最適化でコンパイル時に定数に置き換えられる。
クラス変数はアドレスを参照しない限りコンパイル時に定数に置き換えられる。(アドレスを参照できないようにするにはenumをつかう)
これは関数のconstかつstaticな変数とconst な変数でもおなじことですか?
141:デフォルトの名無しさん
14/04/15 15:37:07.75 tBkVUf7m
constがついているからといってコンパイル時定数に置き換えられるとは限りません
コンパイル時定数に置き換えられるのは基本的にメンバ変数のstatic const intだけです
142:デフォルトの名無しさん
14/04/15 15:54:55.16 ZhvDr343
なにいってんの?
ヘッダにconstで定義しておけば定数に展開される
変数と違ってコンフリクトせずにリンクされるだろ
143:デフォルトの名無しさん
14/04/15 17:14:40.81 pNCuTv8p
最適化畳み込みと定数を一緒にすんな
144:デフォルトの名無しさん
14/04/15 17:36:22.42 ZhvDr343
なにその最適化論馬鹿なの?
ヘッダに const 書く場合とソースに const 書くのとは
まったく別なんだけどさ
145:デフォルトの名無しさん
14/04/15 17:40:17.93 nGPCY0pH
なぜヘッダならソースならの話になるんだ
必ずコンパイル時定数になるのと
もしかしたら最適化で定数にしてくれるかもしれない
は全く別の話だろう
146:デフォルトの名無しさん
14/04/15 19:53:01.86 X1tE4sNn
ヘッダーは処理系が提供するもので
プログラマーが書くファイルはヘッダーとは言わないんだけど
そこんとこOK?
147: ◆QZaw55cn4c
14/04/15 20:00:16.02 IcL8WQqn
>>146
いや,自前でヘッダを書くことは普通のことかと
分割コンパイルしたことありますか?
148:デフォルトの名無しさん
14/04/15 20:16:04.89 Kk2d82mo
>>146-147
>>19
149: ◆QZaw55cn4c
14/04/15 20:24:16.19 IcL8WQqn
>>148
>>19
>ヘッダーという用語は規格上は処理系が提供するものを指す
規格とやらののどこにかかれているか引用してくれ
150:デフォルトの名無しさん
14/04/15 21:17:34.56 Kk2d82mo
>>149
それはドヤ顔の>>146に聞け。
151:デフォルトの名無しさん
14/04/15 22:10:01.92 5PwrNHty
ISO/IEC 14882:2011の16.2段落1~7あたり?
微妙な記述だな
152:デフォルトの名無しさん
14/04/15 22:28:34.12 LKf0w0dM
>>146
あなた上のJava知識で答えてる人ですよね
初心者でも言いませんよそんな事
153:デフォルトの名無しさん
14/04/15 22:58:47.22 LKf0w0dM
>>142
ただのメンバ変数を実際に初期化するのは、コンストラクタですので
定義の場所は関係無いです
その上コンストラクタのインライン化で、constメンバが最適化で定数になろうが、
ソース上では定数式として扱えることとは別次元の話です
154:デフォルトの名無しさん
14/04/15 23:13:47.00 UvYr1D+z
データメンバに構造体配列があんだけど{{,,,},{,,,}…みたいなやつで初期化できない
案として関数で同じ型tempに入れた後memcpyするって考えたんだけど、
{{,,,},{,,,}…みたいなやつ以外で配列に楽に数値入れられる方法ない?
155:とんぼ ◆0ioouYq6qF8x
14/04/15 23:14:43.49 GMTmmGNh
質問です。
「ロベールのC++入門講座」って良い本でしょうか?ちょっと興味を持っています。
www.amazon.co.jp/dp/4839926050
156:デフォルトの名無しさん
14/04/15 23:21:17.29 tBkVUf7m
>>154
URLリンク(ideone.com)
157:デフォルトの名無しさん
14/04/15 23:43:50.57 irAkhtzu
取り替え 新しい
158:デフォルトの名無しさん
14/04/15 23:55:03.42 UvYr1D+z
>>156
試してみますありがとう
159:デフォルトの名無しさん
14/04/16 00:18:42.75 33nvow5c
>>155
はい
160:デフォルトの名無しさん
14/04/16 00:28:28.07 2jM3l7Be
>>152
part109から出てる話(のコピペ)だが、実は規格的にはその通りらしい。
ドヤ顔がうざいので>>18-19あたりでテンプレ化が提案された。
161:デフォルトの名無しさん
14/04/16 00:54:02.89 j3CsnXmn
403 デフォルトの名無しさん sage 2014/01/04(土) 03:26:18.89
>>>400
>ヘッダーというのはコンパイラが提供するものなので
>アナタは書かないで下さい
429 デフォルトの名無しさん sage 2014/01/04(土) 13:36:43.48
>おそらくど初心者の寝言
432 デフォルトの名無しさん sage 2014/01/04(土) 13:52:11.33
>iostreamのようなものがヘッダーで
>プログラマーが書いたmy.hはヘッダーじゃないってことだろ。
>「インスタンスと言ったらテンプレートの話」レベルでは厳密には正しい。
>規格上は
>#include "my.h"
>はヘッダーでなくソースファイルのインクルード。
「インスタンス」のテンプレ化も誰か考えてくれ
162: ◆QZaw55cn4c
14/04/16 01:33:54.12 QJ8zo2+Q
>>151
16.2 Source file inclusion
[cpp.include]
1 A #includedirective shall identify a header or source file that can be processed by the implementation.
この or は「すなわち」と読んでしまいそうだ
163:デフォルトの名無しさん
14/04/16 01:44:38.87 d9mP/+D0
…どう迷訳したら>>162が>>19になるんだ
164:デフォルトの名無しさん
14/04/16 02:03:28.59 tL+eav+5
私も>>162の意図は理解できかねますが、
規格には確かに明示的には書かずとも、使い分けているようです
初心者でも言わない、と言った事を謝ります
> A preprocessing directive of the form
> # include < h-char-sequence> new-line
> searches a sequence of implementation-defined places for a header identified ....
> 3 A preprocessing directive of the form
> # include " q-char-sequence" new-line
> causes the replacement of that directive by the entire contents of the source file identified...
> [Note: (略) in general programmers should use
> the < > form for headers provided with the implementation,
> and the " " form for sources outside the control of the implementation.
165:デフォルトの名無しさん
14/04/16 07:37:56.51 +jbsyRAW
どっちが初心者だってことか。C++の世界は奥が深いな。
166:デフォルトの名無しさん
14/04/16 08:08:09.96 KLaNkKwv
一つ言えるのは、
この知識が役に立つことは今後無い
167:デフォルトの名無しさん
14/04/16 08:51:59.21 hgB94LTZ
>>156
vs2012に張り付けてみたらtest::innerのところ波線引かれてるんだけど
168:デフォルトの名無しさん
14/04/16 09:09:57.22 Im3wLyAK
>>167
それって規格準拠度が(ry
実は俺も::innerは初めて見た……ググっても内部クラスのことしか出てこねぇw
169:デフォルトの名無しさん
14/04/16 09:10:27.93 diJ3rZ34
vs2010でデフォルトエンコードをUTF8にする方法ってないですよね・・・?
170:デフォルトの名無しさん
14/04/16 09:11:43.32 B883BlvZ
ヘッダがマシーンによってプロデュースされるなんて話は初めて聞いた
171:デフォルトの名無しさん
14/04/16 09:15:51.92 hgB94LTZ
>>168
2013だと波線でなかった。新しめの方法なんですね
172:デフォルトの名無しさん
14/04/16 12:06:12.86 C8nNiAQg
>>164
使い分けてることと、提供するかどうかは別だと思うが
#include "~" はソースもインクルードできるからヘッダーって言ってないだけじゃね?
173:デフォルトの名無しさん
14/04/16 14:57:05.92 cUKcFdx2
だな
>>164を読んで#include ""するソース(ヘッダ含む)はヘッダと呼んじゃいけない
と判断するやつはどこかおかしい
174:デフォルトの名無しさん
14/04/16 15:05:12.66 d9mP/+D0
つか".h"".hpp"なんだから素直にヘッダって呼んでやれよ
なにか?じゃあこのhは別の意味のhか?
175:片山博文MZバグロボ ◆T6xkBnTXz7B0
14/04/16 16:00:32.29 /cD6mxuW
>>169
neareal.net/index.php?Programming%2FEnvironment%2FVisualStudio%2FChangeTheCharacterCode
>どうやらVisualStudio2012以前のVisualStudioには
>デフォルトのエンコードを設定する方法はないようです。
176:デフォルトの名無しさん
14/04/16 16:04:36.82 eXrLUXWn
第一段落で
A #include directive shall identify a header or source file
と言う説明があるからheaderとsource fileは別物
むしろ>>164を読んでhがheaderと思う方が変
177:デフォルトの名無しさん
14/04/16 16:39:17.50 bROaamlw
ヘッダーファイルって文字通り先頭で読み込むファイルのことでしょ。
その拡張子はCでは慣習的に.hにしてた。
ってことじゃないの?
178:デフォルトの名無しさん
14/04/16 17:22:26.81 RlYL1+PT
規格から読みとれるのは以下
・#include<>は処理系定義のheaderをインクルードする
・#include""はソースファイルをインクルードする
・#include""はソースファイルが見つからなかったら
#include<>として再解釈する
・headerとソースファイルは別物らしい(16.2p1)
そのためheader fileなどという用語はない
・stdio.hは処理系提供のheader
・unistd.hも処理系提供のheader
・myprog.hはソースファイル
・規格にはファイルの拡張子(.hと.cpp)についての言及無し
さあmy.hはヘッダーか否か?
179:デフォルトの名無しさん
14/04/16 17:23:29.68 cUKcFdx2
ヘッダー/ソースっていうんじゃなくて
ヘッダー/実装っていう2分だよな
規格中の言葉遣いが完全じゃないところに拘るのはちょっと。。。
ソースファイル納入を条件の仕事で下請けがヘッダファイルを除外して納入してきたらどう思う?
180:KAC
14/04/16 17:35:03.48 JwWRkONO
ソースファイルってのは、ソースコードがかかれたファイルの事。
なので、ヘッダファイルと呼ばれているものもソースファイルの一種。
ヘッダファイルというのは、
ソースファイルのうち先頭で読み込まれることを前提としたもの。
#include "my.h"
void main(){
#include "my.c"
};
なら、"my.h"はヘッダで、 "my.c"はヘッダじゃない。
処理系がヘッダ以外のものを提供することは前提としていないから
処理系が提供するヘッダという記載になっただけじゃ?
181:デフォルトの名無しさん
14/04/16 17:49:52.35 1uhiGx2H
ソースAにグローバル変数で以下のように宣言されていて
static double gdatanum=0.0;
これをGetSetする関数があるのですが
ソースBでSetしてソースCでGetすると値が0.0でした
なぜでしょうか
182:デフォルトの名無しさん
14/04/16 17:51:21.85 NuAUVtDw
Setでgdatanumに代入ができてないのだろう
183:デフォルトの名無しさん
14/04/16 17:52:54.26 RlYL1+PT
>>180
>ヘッダファイルというのは、
>ソースファイルのうち先頭で読み込まれることを前提としたもの
自分の脳内定義を居丈高に主張されても
>・headerとソースファイルは別物らしい(16.2p1)
>・myprog.hはソースファイル
この状況でmy.hがヘッダーと言う人は論理的な思考が出来ない人
184:KAC
14/04/16 17:54:52.47 JwWRkONO
>>181
GetSetする関数とそれを使う所のソース貼ってみたら?
185:KAC
14/04/16 17:55:35.03 JwWRkONO
>>183
おまえ、"ヘッダ"の意味辞書で引いてみ?
186:デフォルトの名無しさん
14/04/16 17:56:17.15 1iwpwwyp
>>181
staticなんか付けたから
187:デフォルトの名無しさん
14/04/16 17:59:17.93 HsjrRpyw
includeするユーザーのファイルはheader fileに限定できないから
source fileと書いているだけなんじゃ。
でも、その表現だと、処理系が独自にヘッダーじゃない
includeするファイルを提供することが出来ないような。
188:デフォルトの名無しさん
14/04/16 18:22:01.22 RlYL1+PT
>>187
規格はmyprog.hがソースファイルだと言っているのけれど
header file以外のsource fileって何?
>>185
C++の話をする文脈で断りもなく
規格の用語を異なる意味で使ったらおかしいでしょ
189:とんぼ ◆0ioouYq6qF8x
14/04/16 18:36:18.46 VWOXLAN+
>>125
Java言語でもクラス変数で意味は通じると思うよ
190:デフォルトの名無しさん
14/04/16 18:38:42.19 oc0x5q+M
× Java言語でもクラス変数で意味は通じる
○ Javaドカタとの会話でもクラス変数で意味は通じる
191:とんぼ ◆0ioouYq6qF8x
14/04/16 18:52:16.09 VWOXLAN+
>>190
Java言語仕様でも「クラス変数」って使われてるよ
192:デフォルトの名無しさん
14/04/16 19:19:38.95 RlYL1+PT
すごく細かいことだけど
JAVA()ではstatic fieldとclass variableは
両方とも用語が定義されていて意味が違う
4.12.3
A class variable is a field declared using the keyword static within a class
declaration (§8.3.1.1), or with or without the keyword static within an
interface declaration
>>124みたいな嘘がどこから出てくるのか不思議
193:デフォルトの名無しさん
14/04/16 19:25:22.97 HsjrRpyw
>>188
C++の規格では、headerもsource fileも明確に定義されているわけではない。
#includeの定義に定義されていない(がおそらく自明な)用語として用いられているだけ。
そもそも16.2のタイトルがSource file inclusion
その中で<>は指定されたheaderの内容を取り込み、
""は指定されたsource fileの内容を取り込む
とあるからタイトルからして、source fileという表現はheaderという表現を内包している。
6 A #include preprocessing directive may appear in a source file that has been read because of a #include
directive in another file, up to an implementation-defined nesting limit.
さらにこんなことも書いてあるが、ここでいうsource fileって<>で指定したheaderも含んでいるだろ。
headerという用語をユーザー側のファイルで使ってはいけないなんて
ルールはどこにも書いていない。
194:デフォルトの名無しさん
14/04/16 19:34:33.23 RlYL1+PT
>>193
都合の悪いところを読み飛ばすなよ
>>178で書いたとおり
「ソースファイルを取り込むものだけど
失敗したらheaderの取り囲み」だからタイトルが
Source file inclusionなんだよ
>ここでいうsource fileって<>で指定したheaderも含んでいるだろ
どこからそんな妄想が?
もう一度書いてやる。
>・headerとソースファイルは別物らしい(16.2p1)
>・myprog.hはソースファイル
この状況でmy.hがヘッダーと言う人は論理的な思考が出来ない人
195:デフォルトの名無しさん
14/04/16 19:41:22.60 d9mP/+D0
小保方みたいなこといってんじゃねーよ
196:デフォルトの名無しさん
14/04/16 19:52:33.61 HsjrRpyw
>The method by which a sequence
>of preprocessing tokens between a < and a > preprocessing token pair or a pair of " characters is combined
>into a single header name preprocessing token is implementation-defined.
ここに関しても良く分からんというか、single souce file nameの時は
実装定義とも未定義とも書いていないが。
明確に定義されないで使われている用語に関して
その使われ方から類推して一般的に用いられているのと
違う意味として定義されているように解釈するのは
それこそ、論理的思考ではないだろ。
197: ◆QZaw55cn4c
14/04/16 20:01:23.76 QJ8zo2+Q
>>176
お前、そんなところでちょん切るから 「A or B において A≠B」 という誤解が生じるんだ、ちゃんと全文を書け
1 A #includedirective shall identify a header or source file that can be processed by the implementation.
この場合、. 「A or B において A≒B」の可能性を否定できない
「A いいかえると B」「A すなわち B」「A つまり B」と解釈する余地がある。
高等学校リーダーの初歩だからしっかり復習したまえ
198:デフォルトの名無しさん
14/04/16 20:12:58.87 Im3wLyAK
>>197
論理の世界じゃ「AもしくはB」は排他的論理和だからな……
「AまたはB」だと両方真でもOKだから。これはプログラムでも同じこと
199:デフォルトの名無しさん
14/04/16 20:13:18.78 KbgAUGrE
そのあとに>>164の使い分けが続くのに
どうしてそんな曲解ができるだぜw
200:デフォルトの名無しさん
14/04/16 20:15:36.81 1tTmzh2z
>>197
高等学校リーダーの初歩が分かっているなら
能書きは良いから、その文を和訳しろよ
201:デフォルトの名無しさん
14/04/16 20:20:54.95 2jM3l7Be
>>198
排他的!?
202:デフォルトの名無しさん
14/04/16 20:41:08.27 d9mP/+D0
「1行の#includeディレクティブは唯1つの、処理系が処理できるヘッダーもしくはソースファイルを識別する(様に記述する)べきである」
そりゃそうね。ここではheaderとかsourceとか主題からはどうでもいい
203:とんぼ ◆0ioouYq6qF8x
14/04/16 20:42:13.58 VWOXLAN+
>>192
英語苦手だから間違ってるかもしれないけど
Java言語では、「static フィールド = クラス変数」だと思うよ
> 8.3.1.1. static Fields
> ...
> A static field, sometimes called a class variable, is incarnated when the class is initialized (§12.4).
スレ違いごめんなさい。
204:デフォルトの名無しさん
14/04/16 20:42:44.40 tL+eav+5
>>197
このような堅い文章で、カンマなしのorを、すなわちなんて訳さないと思いますが
205:デフォルトの名無しさん
14/04/16 20:44:09.48 tL+eav+5
>>203
その一文だと、正式名称はスタティックフィールドという意図になると思います
206:デフォルトの名無しさん
14/04/16 20:54:52.75 1tTmzh2z
>>202
なんで、
ヘッダーいいかえるとソースファイル
ヘッダーすなわちソースファイル
ヘッダーつまりソースファイル
ってしないんだ?
207:とんぼ ◆0ioouYq6qF8x
14/04/16 22:23:16.70 VWOXLAN+
>>205
私には、正式がどうかはわかりません。
staticフィールド (staticのついてるフィールド) = クラス変数
非staticフィールド (staticのついていないフィールド) = インスタンス変数
「クラス変数」と「インスタンス変数」の方が、世間一般的な用語だと思います。
なお、「クラス変数、インスタンス変数」の用語も使われていますので、
意味は通じると思います。
Java Language Specification
URLリンク(docs.oracle.com)
スレ違いすみません
208:デフォルトの名無しさん
14/04/16 22:37:47.15 2jM3l7Be
でもこの話の発端となった>>99では「クラス変数」という表現でインスタンス変数のことも指してたし、
あんまり一般的じゃないのか?とも思った。
209:デフォルトの名無しさん
14/04/16 22:51:59.76 cUKcFdx2
何の役にも立たない、どーでもいい重箱の隅のトンチクイズみたいなのばかり盛り上がるね
210:デフォルトの名無しさん
14/04/16 23:15:11.18 RlYL1+PT
>>207
Java言語仕様では>>192に示した「class variable」は
斜体つまり特別なterm。
その定義(4.12.3)が「class宣言内のstaticなフィールドおよび
インターフェース宣言内のフィールド」なの。
そして何故かclass内のstaticなフィールドのみをstatic fieldと呼んで(8.3)
インターフェース内のstaticなフィールドを
static fieldと呼ぶ記述は見あたらない(9.3)。
ちなみに先月のJava言語仕様改訂までは
static field=class variableでいいと思う
211:デフォルトの名無しさん
14/04/16 23:22:18.50 tG4IqjPv
インクルードパスが通ってるところがヘッダーでそれ以外がソースファイルってことか
212:デフォルトの名無しさん
14/04/16 23:24:08.08 +Gnb3ikJ
一般的に使われている用語の話と規格の定義を一緒にする人がいるから
規格の解釈を語ろうとする人との会話が噛み合っていない
213:デフォルトの名無しさん
14/04/17 00:43:29.79 j9nnbtNK
盛り上がってるとこ悪いけどコンパイル時定数にしたいならconstexpr使えよ
214:デフォルトの名無しさん
14/04/17 01:06:16.22 471VrbUx
>>213
爺がが多いこのスレ住人はC++11は使わない
C++11は完全にゆとり用だし
215: ◆QZaw55cn4c
14/04/17 02:34:02.07 7Na2DDXs
>>204
たしかに >>197 の解釈をしたいのなら同格のコンマ、がほしいところではありますね
それにしても「ヘッダ」と「インクルードファイル」を分けた思想がよくわかりませんね、内容に差はないのに
216:デフォルトの名無しさん
14/04/17 02:34:56.33 7Na2DDXs
失礼、非限定用法のコンマ、としたほうがいいかな
217:デフォルトの名無しさん
14/04/17 07:53:47.81 sHAbMX/D
爺はC++すら使いませんが…。
何度注意してもmemsetでクラスを初期化しようとするし
むしろ使わせてはいけない。
218:デフォルトの名無しさん
14/04/17 08:05:40.50 INoT3wR+
baad f00d とかdead beef じゃ無いだけまし
219:デフォルトの名無しさん
14/04/17 09:01:27.72 63MO/YQs
>>215
ヘッダはコンパイラから見て内容がほぼ固定であり、ファイルとして処理するよりも効率的な、
(たとえば規定どおりの宣言を有効にするコンパイラ内部のフラグを立てるだけ、とかいう)
実装があるかもしれない・・・ってことだと理解している。そういう実装を見たことは無いんだけど。
220:デフォルトの名無しさん
14/04/17 10:04:15.07 BAGutlSP
ヘッダはファイルじゃなくてもいいんじゃなかった?
221:デフォルトの名無しさん
14/04/17 12:50:13.74 WzS6AOuu
ヘッダーはファイルである必要はないよ
メジャーなコンパイラの実現方式がファイルであって
プログラマがヘッダーをコンパイラに追加させる仕組みが
インクルードディレクトリ
222:デフォルトの名無しさん
14/04/17 15:21:05.38 cqNmjTsF
ディレクティブ
223:とんぼ ◆0ioouYq6qF8x
14/04/17 17:43:00.61 yCqA9Csi
>>210
「 class variable 」の説明部分見ました。ありがとうございます。
interface のフィールドは、実質的に public static final がついた状態になるので、
あえて static フィールドとは言わないのだと私は思います。
スレ違いごめんなさい。
224:デフォルトの名無しさん
14/04/17 22:44:49.70 BPlv1lov
スパゲッティつくってくる
225:デフォルトの名無しさん
14/04/17 23:04:51.62 Y7Fdq8Iy
食いもんの方か、プログラムの方かわからんから突っ込みづらいわ
226:デフォルトの名無しさん
14/04/18 00:28:18.50 fMz311pO
>>225
コードの方なら普通全力で止めに入るもんだろ……
227:デフォルトの名無しさん
14/04/18 04:04:49.92 o8YE1PQa
そういや実装が見事にスパゲッティなMonacoinが近日高騰するそうですよ
228:デフォルトの名無しさん
14/04/18 04:47:38.93 W8zdUC/x
そんな二番煎じの通貨では小麦も買えぬわ
229:デフォルトの名無しさん
14/04/18 06:00:04.50 Mr51hVCQ
昭和の労害:スパゲッティ
普通の人:パスタ
230:デフォルトの名無しさん
14/04/18 07:53:09.03 X42XW7L4
>>226
自分に関係するなら止めるけど、関係しないなら割りとどうでもいい。
本人趣味でやってるかも知れんし。
231:デフォルトの名無しさん
14/04/18 08:13:22.34 9F2L+G8f
>>229
スパゲッティ以外のパスタを知らない田舎者。
232:デフォルトの名無しさん
14/04/18 08:29:21.30 DFRxgHMB
これどういうことですかね…
/* g++ 4.7.2 */
#include <iostream>
#include <chrono>
#include <unistd.h>
int main()
{
std::chrono::system_clock::time_point tp1;
std::chrono::system_clock::time_point tp2;
tp1 = std::chrono::system_clock::now();
sleep( 3 );
tp2 = std::chrono::system_clock::now();
std::chrono::milliseconds m1 = std::chrono::duration_cast<std::chrono::milliseconds>( tp2 - tp1 );
std::cout << m1.count () << " msec." << std::endl;
std::time_t tt1, tt2;
tt1 = std::chrono::system_clock::to_time_t( tp1 );
tt2 = std::chrono::system_clock::to_time_t( tp2 );
std::cout << std::ctime( &tt1 )
<< std::ctime( &tt2 )
<< std::endl;
return 0;
}
// 3000 msec.
// Fri Apr 18 00:05:57 2014
// Fri Apr 18 00:05:57 2014
233:デフォルトの名無しさん
14/04/18 08:31:48.36 IuBLW4Yt
どうって、その情報からは
お前がコミュ障ってことしかわからん
234:デフォルトの名無しさん
14/04/18 08:34:01.00 6aub1SvC
sleep(3000)ってしようとしたのかな
235:デフォルトの名無しさん
14/04/18 08:35:49.18 VaFc+PBF
now()で3秒空けて2回時刻取得したのに
to_time_t()で文字列に変換したら差が無かったって事でしょ
236:デフォルトの名無しさん
14/04/18 08:38:16.45 DFRxgHMB
>>235
こういう仕様なんですか?
237:デフォルトの名無しさん
14/04/18 08:43:43.17 Ovl+7gT1
sleepは秒指定なのか?
と>>234が言ってるぞ。
238:デフォルトの名無しさん
14/04/18 08:45:19.05 DFRxgHMB
>>234
>>237
<unistd.h>のsleep()は秒指定です
239:デフォルトの名無しさん
14/04/18 09:48:44.05 DFRxgHMB
>>232の
std::cout << std::ctime( &tt1 )
<< std::ctime( &tt2 );
を、
std::cout << std::ctime( &tt1 );
std::cout << std::ctime( &tt2 );
に変更したら上手く行きました…
240:デフォルトの名無しさん
14/04/18 10:17:59.35 nz5iU1yO
そりゃぁねぇ。ctime()は結果を同じ場所に置くから。
241:デフォルトの名無しさん
14/04/18 10:57:08.78 DFRxgHMB
strtok()は知ってたんですが、ctime()もそうだとは!
お騒がせしました
242:デフォルトの名無しさん
14/04/18 16:59:43.47 W8zdUC/x
>>240
スレッドが関わるとどうなるんだこういうの?thread_local?
243:デフォルトの名無しさん
14/04/18 17:43:11.46 kmb+8Ph3
20.11.8/2
The contents are the same as the Standard C library header <time.h>.230 The functions asctime, ctime, gmtime, and localtime are not required to avoid data races (17.6.5.9).
244:デフォルトの名無しさん
14/04/18 18:02:14.18 W8zdUC/x
なる。もう使うな状態なんだな…
245:デフォルトの名無しさん
14/04/18 22:00:22.34 FjJDc/SF
>.... are not required to avoid data races
変更したくても影響大で出来ないのか?
246:デフォルトの名無しさん
14/04/18 22:57:33.82 D85r3WZf
C++11時点で最新のC言語規格にスレッドは無かったし
C++の規格書の中で別の規格であるC言語についてはあーだこーだ言いたくないんじゃない?
歴史を見ればCfrontやMinGWみたいにC++処理系とCランタイムが別々の開発元とかになると手の出しようが無いし
247:デフォルトの名無しさん
14/04/19 04:36:37.42 uixitbPb
ちなみにISO/IEC9899:2011でもctimeはマルチスレッド非対応
248:デフォルトの名無しさん
14/04/19 04:38:22.41 uixitbPb
そもそも内部で確保したC文字列を返す関数を使う奴は低能
249:デフォルトの名無しさん
14/04/19 07:59:44.33 mm0uPHzd
領域解放の必要のない構造体返して来る関数全般はマルチスレッド対応してないよ。
250:デフォルトの名無しさん
14/04/19 08:13:39.74 mm0uPHzd
そもそもctimeが返して来る領域は一時的なものであるのでつかいまわす場合は、
std::cout << std::string(std::ctime(&tt1)) << std::string(std::ctime(&tt2)) ;
と記述すべきところ。
251:デフォルトの名無しさん
14/04/19 08:41:29.66 aOosZTdR
>>250
激しく同意。
struct tm st = *localtime(&t);
とかも良くやる。
_r 系があればそっち使うけどね。
252:デフォルトの名無しさん
14/04/19 09:41:12.82 5Hp05dG5
>>248
スレッドがない環境で作られた仕様にダメ出しして悦に入るって...
253:デフォルトの名無しさん
14/04/19 09:45:15.09 uixitbPb
>>250
>std::string(std::ctime(&tt1)) << std::string(std::ctime(&tt2))
頭が悪いにも程がある
>>252
一つ二つ前のレスくらい呼んだらどうなの?
254:デフォルトの名無しさん
14/04/19 20:16:02.49 5Hp05dG5
>>253
> 一つ二つ前のレスくらい呼んだらどうなの?
意味わからん。
ひょっとして、バカなの?
255:デフォルトの名無しさん
14/04/19 20:34:59.05 uCk0NbPn
そうだよ
お前の頭が馬鹿なの
256:デフォルトの名無しさん
14/04/19 21:18:23.95 /NVZ6Ial
C++11からマルチスレッド対応したのに色々使えない関数があるって
増築言語らしいよな。
257:デフォルトの名無しさん
14/04/19 21:22:47.27 Db2IzPol
>>249
ダウト
258:デフォルトの名無しさん
14/04/19 21:26:36.87 8AHQat+M
>>256はマルチスレッドの知識ゼロ
アホ過ぎる
259:デフォルトの名無しさん
14/04/19 21:36:56.46 /NVZ6Ial
マルチスレッド非対応の関数を新しい関数を作って
対応させる話なんてないのか?
260:デフォルトの名無しさん
14/04/19 22:10:47.46 qMQpXs4I
ctime_s
261:デフォルトの名無しさん
14/04/20 04:16:34.27 ASih51cE
>>260
Cのctime_sならスレッドセーフだとでも?
262:デフォルトの名無しさん
14/04/20 07:04:22.94 NvL/wT5B
スレッドセーフじゃないの?
263:デフォルトの名無しさん
14/04/20 08:11:12.17 F5kkg2x4
>>255
ああなるほど、それは悔しいね (w
264:デフォルトの名無しさん
14/04/20 10:29:15.15 vBgzPsoc
>>262
保証は無い
でも規格で定められている項目を守ったうえでctime_sをアンセーフに書く奴は頭が悪い
265:デフォルトの名無しさん
14/04/20 10:46:03.02 ASih51cE
つまりスレッドセーフじゃないんだよね
266:デフォルトの名無しさん
14/04/20 11:05:23.40 CbBx3K3H
頭悪いな。
「スレッドセーフであることは保証されていない」の否定は「スレッドセーフじゃない」ではない。
267:デフォルトの名無しさん
14/04/20 11:13:06.38 ASih51cE
それは
*(int*)0 = 0;
がundefinedなので、落ちるかもしれないけど落ちないかもしれないので
『「安全でない」は誤り』と言うようなもの
268:デフォルトの名無しさん
14/04/20 11:19:13.27 jKhGiMdp
ぬるぽ!
269:デフォルトの名無しさん
14/04/20 13:05:04.06 Zm/mlPmi
ヌルヌルってなんかいやらしぃ
270:デフォルトの名無しさん
14/04/20 13:21:32.24 WoZ5UmxT
別にスレッドセーフじゃないのをラップしたスレッドセーフな関数/クラスを作るなんて簡単なことだから
そんなものはそれぞれの事情に合わせて各人が実装すれば良い事で
互換性が至上な規格側で対応する必要なんてない
それが嫌な人間はC/C++なんてやるべきではない
271:デフォルトの名無しさん
14/04/20 16:17:12.26 20s7jMoi
それ以前にC++に限らず
全ての関数がマルチスレッド対応した
言語なんて存在しない
272:デフォルトの名無しさん
14/04/20 16:35:59.97 PbdtxenD
VCでライブラリがマルチスレッド対応になってる理由はどうしてなん?
273:デフォルトの名無しさん
14/04/20 16:49:01.78 ASih51cE
>>272
std::mallocなど主要な関数をスレッドセーフにしたものを
「スレッドセーフ版」と呼んでいるだけだが
274:デフォルトの名無しさん
14/04/20 16:50:51.43 Cj94JKP5
WindowsAPIはマルチスレッド用しかないだろ?
それを利用するコンパイラも、素直に実装したらマルチスレッド用だろ。
275:デフォルトの名無しさん
14/04/20 17:00:19.48 ASih51cE
>>274の論法だとReadFile,WriteFileがスレッドセーフだと
DBMS製品開発者は何もしなくても
データベースがスレッドセーフになってしまう
276:デフォルトの名無しさん
14/04/20 17:08:13.77 Cj94JKP5
APIが再入可能でも、ソフトウェア製作者がそれを破ればそこで終わる。
リエントラント - Wikipedia
リエントラント(reentrant、再入可能)とは、プログラムやサブルーチンが、実行の途中で割り込まれ、その実行が完了する前に再び呼び出され実行されても安全だという性質を指す。
リエントラント性の原則
リエントラントなコードは、静的変数やグローバル変数を保持しない。
リエントラントなコードは自分のコードを書き換えない。
リエントラントなコードは、リエントラントでないプログラムやサブルーチンを呼び出さない。
277:デフォルトの名無しさん
14/04/20 18:08:52.69 vBgzPsoc
>>274
URLリンク(www.google.co.jp)
278:デフォルトの名無しさん
14/04/20 21:09:11.78 wGZJ24HN
あれ?
VC++はマルチスッドレ用ライブラリとシングルスッドレ用ライブラリのどっちをリンクするか選べるようになってなかったっけ
最新のは違うのかな…・_・:
279:デフォルトの名無しさん
14/04/20 21:11:52.47 NvL/wT5B
staticかdllかを選べるだけ
280:デフォルトの名無しさん
14/04/20 21:20:00.67 Cj94JKP5
互換性に影響する変更点 (CRT)
Visual Studio 2005
シングル スレッド CRT ライブラリの libc.lib と libcd.lib は削除されました。
マルチスレッド CRT ライブラリを使用してください。
/ML コンパイラ フラグはサポートされなくなりました。
いくつかの関数について、マルチスレッド コードとシングル スレッド コード間の
パフォーマンスの違いが重要な問題になる状況に備えて、ロックのないバージョンが追加されました。
URLリンク(msdn.microsoft.com)(VS.80).aspx
281:デフォルトの名無しさん
14/04/20 23:48:47.43 jKhGiMdp
マルチスレッド対応していない関数に CRITICAL_SECTION で囲えばどれもこれも一発で済む問題だけどねん
282:デフォルトの名無しさん
14/04/20 23:58:42.69 ASih51cE
>>281
>囲えばどれもこれも一発で済む
本気で言っているのか?
283:デフォルトの名無しさん
14/04/21 00:07:24.73 8o/8KwGl
再入される時点で、停止させて待つだけだろ。それだとマルチスレッド風プログラムが出来るシングルスレッドだがな。
284:デフォルトの名無しさん
14/04/21 00:12:20.75 p/5mORia
>>281,>>283はマルチスレッド童貞
285:デフォルトの名無しさん
14/04/21 00:20:29.00 p/5mORia
ああ、プログラムから呼び出している全ての関数を
一つのCRITICAL_SECTIONでガードすると言う話か。
そんか糞な発想は無かったわ
286:デフォルトの名無しさん
14/04/21 00:22:05.63 CRoobOqZ
その関数が状態をもたないなら囲えば済む話だけど
大抵、陰に陽に状態をもつ事情があるから非対応なわけで
287:デフォルトの名無しさん
14/04/21 01:12:42.14 A29MM/CQ
セキュリティスペシャリストのC++ソースがなんともいえない感じ
URLリンク(docs.google.com)
の7ページ目から
結構突っ込みどころ満載だと思います
288:デフォルトの名無しさん
14/04/21 03:17:20.97 cBJEGQuq
ipaが矢口以上に問題外なのは分かりきってること
289:デフォルトの名無しさん
14/04/21 06:06:10.48 ZAPzIyVf
a は、RangeOverFlow で b は、AccessViolation というのは大体分かるけど C++ というより C だよなw
290:デフォルトの名無しさん
14/04/21 06:37:37.90 ZAPzIyVf
a の条件というのが、 (画像の列数*3+255-(画像の列数*3)%255) *画像の行数 の値が kMaxIntegerよりでかいときだな
291:デフォルトの名無しさん
14/04/21 06:43:33.92 ZAPzIyVf
おおっと、 もう一個+255 が抜けていた 糞面倒くさい問題だなw
(画像の列数*3+255-(画像の列数*3+255)%255) *画像の行数 の値が kMaxIntegerよりでかいとき
292:デフォルトの名無しさん
14/04/21 06:47:25.74 ZAPzIyVf
c は、 kMaxInteger/bytesOfRow で d が fhBuf.rows だなっ カンタン!カンタン!
293:デフォルトの名無しさん
14/04/21 07:35:12.38 O/wmSMY2
>>274
「UIパーツは UIスレッドからしかアクセスしてはいけない」という MSDN にもない掟が流布されている理由は?
294:デフォルトの名無しさん
14/04/21 08:12:44.61 lfASPZAR
UIパーツって何
295:デフォルトの名無しさん
14/04/21 08:44:56.13 FEeaacIP
>>287
引数がポインタだとかstructとかfseekとかで草生えるw
296:デフォルトの名無しさん
14/04/21 08:51:30.92 o5G2YLhQ
>>293
Win32 APIは知らんが
.NETとかJavaではフレームワークがそういう仕様になっているから
そう思いこんだんだろ
297:デフォルトの名無しさん
14/04/21 10:31:38.82 kg/kzh8d
京都府警は当初、地元の暴力団による犯行説を含め少なくとも3~5つの見立てに沿って捜査を進めていたようですが、
目撃情報や遺留品がほとんどないことから早々に捜査は行き詰まりました。
ある捜査関係者は事件発生から1週間も経たないうちに『事件がまったく読み解けない』と白旗を上げていました」
そう話すのは犯罪に詳しい編集者の久田将義氏だ。
久田氏は近年の警察の対応力の低下を指摘する。
「これは京都府警だけの問題ではなく、警察全体から『捜査のスキーム』が失われつつあるという実態を示すものだと思います。
最近の警察は『事件の裏に潜む真実』よりも、『解決したという実績』を欲しがる。
だから、『解決すべき事件』より『解決方法の分かっている事件』に力を入れる傾向が強まっています。
捜査に対する意識の低下も著しい。
以前、繁華街を所轄する警察署の刑事に街頭監視カメラの死角を指摘したら、『それならカメラを増やせばいい』と言われました。
本来は警らの強化等で対応すべきなのに、監視カメラに頼ろうとする。
これでは警察官の経験を積むことも、捜査の勘を養うこともできません。警察は捜査の原点に立ち返るべきです」
スレリンク(newsplus板)
298:デフォルトの名無しさん
14/04/21 11:50:37.55 fKV6ATCG
MFCだとUIスレッドでハンドルから一時オブジェクトの構築・破棄とかしてたはず
299:デフォルトの名無しさん
14/04/21 12:38:49.30 40ZFOiZP
long double とdoubleを切り替えて2つの同じアプリケーションを作るにはどうやりますか?
300:デフォルトの名無しさん
14/04/21 12:55:31.14 yMOWJNk+
>>299
#if defined(MY_DOUBLE_IS_DOUBLE)
typedef double MyDouble;
#else
typedef long double MyDouble;
#endif
301: ◆QZaw55cn4c
14/04/21 22:42:36.69 nDf0t8Hx
>>296
win32 API でも,別スレッドから
GetDlgItem()
SetWindowText()
とすると,バグるよ,
今は UI スレッドにユーザー定義のウィンドウメッセージをPostMessage() して,UI スレッドに拾ってもらってるよ
302:デフォルトの名無しさん
14/04/22 11:53:45.00 fuQXYmIY
というか、どのスレッドからでもUIをいじっていいと思った理由が知りたいわ。
303:デフォルトの名無しさん
14/04/22 13:07:16.18 xKI6RasN
>>293
お前が知らないだけだろ
http://msdn.microsoft.com/en-us/library/windows/desktop/ms632597.aspx#multithread_apps
304: ◆QZaw55cn4c
14/04/22 18:06:32.75 yUmGGVT5
>>303
そのページのどこにそんなことが書いてあるんだ?
305:デフォルトの名無しさん
14/04/22 18:14:27.10 fuQXYmIY
>>304
えーと、UIスレッド以外のスレッドからも、直接UIスレッドを操作してもいいという主張をしたいの?
306:デフォルトの名無しさん
14/04/22 18:15:20.49 fuQXYmIY
訂正:
直接UIスレッドを操作してもいい
↓
直接Uを操作してもいい
307: ◆QZaw55cn4c
14/04/22 18:18:43.91 yUmGGVT5
>>305
するとバグるからしないのだが,そんなに大事なことが実は MSDN には明記されていないのではないか?と主張したい
308:デフォルトの名無しさん
14/04/22 18:29:10.13 fuQXYmIY
>>307
そういうことね。
めんどくさいから調べないけど、MSDNにもちゃんと書かれてると思うよ。
309:デフォルトの名無しさん
14/04/22 18:46:42.98 NZU8WoRa
>>303の先に書いてあるように見えるのだが
やっぱりQは文盲なの?
310:デフォルトの名無しさん
14/04/22 22:07:38.22 yUmGGVT5
>>309
うん,たぶんね,でも各種コントロールのところでいちいち書いてほしかった‥‥
>>310
英文盲です
311:デフォルトの名無しさん
14/04/22 23:32:40.28 N7biVaey
Qはキチガイだからお触り禁止
312:デフォルトの名無しさん
14/04/23 08:01:29.21 Fk2AHs0t
>>300
ありがとうございます。
コンパイラーでintを64bitに
doubleを128bitにする方法ありますか?
313:デフォルトの名無しさん
14/04/23 08:20:59.11 jbfJ4TDr
>>312
こんなところで糞な質問をするのではなく
コンパイラーのマニュアルを読んで下さい
314:デフォルトの名無しさん
14/04/23 09:03:12.71 Fk2AHs0t
clang++とg++の変更の仕方教えてください。
調べてもわかりませんでした。
315:デフォルトの名無しさん
14/04/23 15:31:10.12 To415BTT
classってソースファイルとヘッダーファイルでどんな風に分けるんですか?
316:デフォルトの名無しさん
14/04/23 16:45:54.81 jbfJ4TDr
>>315
他のファイルにみせる必用のあるものとそうでないもの
という基準で分けます
317:デフォルトの名無しさん
14/04/23 16:52:53.22 lyxOexcu
(お、PImpl戦争かな?)
318:デフォルトの名無しさん
14/04/23 17:44:25.09 jbfJ4TDr
ただしp_implはコンパイル時間が問題となったり
ここぞと言うときだけにした方がよいでしょう
319:デフォルトの名無しさん
14/04/23 17:53:42.01 U/+ppQ2B
pimplでなんでコンパイル時間が問題になるんだ?
逆に減らすために使うものだろ
320:デフォルトの名無しさん
14/04/23 18:06:48.80 lyxOexcu
>>319
おちつけ。言ってることは同じだ
321:デフォルトの名無しさん
14/04/23 18:11:23.13 U/+ppQ2B
ニホンゴムズカシイデス
322:デフォルトの名無しさん
14/04/23 18:29:01.25 y0HH+fn0
味方同士の撃ち合いワロタ
323:デフォルトの名無しさん
14/04/23 18:31:47.37 y0HH+fn0
>>315
まずは宣言と定義(実装)で分けると良いよ
324:デフォルトの名無しさん
14/04/23 23:17:09.90 k48oXhUz
話についていけない
325:デフォルトの名無しさん
14/04/24 18:39:00.39 PqcPyz4U
ファイルの日付変更したいんだが
2014/01/20 16:57:39の場合 0x01CF15B549E45B80となってる物を指定したいのだが
何使えばいい?
326:デフォルトの名無しさん
14/04/24 18:45:33.35 UcaZdIF2
まず「常識」と「人とのコミュニケーション能力」を
身につけて駆使することが必用
327:デフォルトの名無しさん
14/04/24 18:54:12.20 cFYNvq0Y
>>325
どう変形してるんだよ……
328:デフォルトの名無しさん
14/04/25 16:20:49.39 ERt+6QIp
perlでのunixtimeへの変換
$unixtime = ($unknowntime)/10000000-11644473600;
なんてやる変な日時
>>327
ゲームとかのアーカイブファイルに格納されてる時間
今まではperlでやってたんだけどbignum使うと処理速度が遅くなるんでCで書く事になった
329:デフォルトの名無しさん
14/04/25 18:39:55.70 CCVAHBoy
pimplで.cppに書いたやつってインライン展開されるの?
330:デフォルトの名無しさん
14/04/25 18:42:49.17 ldQxBRm0
されない
331:デフォルトの名無しさん
14/04/25 21:13:03.80 Lf2qM7ZJ
pimplどころかデータメンバ一切持ってないのにsetterとgetter持ってて動くクラス作ったことある。
332:デフォルトの名無しさん
14/04/25 21:34:02.18 UXf8CmSv
pimplとデータメンバーは関係ないが
データメンバーが無いのにsetterとは
とんだ糞プログラムだな
333:デフォルトの名無しさん
14/04/25 21:53:56.57 0oO7C4De
バレーボールのシミュレーターだったんだよ
334:デフォルトの名無しさん
14/04/25 22:37:39.80 vKWRVcWD
>>328
あんたは>325か?
だとしたら、自分で答えを書いているようなもんじゃないか。
335:デフォルトの名無しさん
14/04/25 22:54:35.68 LtcOoigK
>>334
よっぽど自分でスクリプト書きたくないとしか……
336:デフォルトの名無しさん
14/04/26 00:06:17.38 fIjhv7f7
64ビット整数(long longか__int64かint64_t)を使え
337:デフォルトの名無しさん
14/04/26 05:30:35.15 H4OEZVXF
128bit 時代になったら long long long になるんだろうか…
338:デフォルトの名無しさん
14/04/26 08:01:35.73 /IqLL/o+
きっとlong long long longだよ
339:デフォルトの名無しさん
14/04/26 12:02:56.50 FOzpDrfL
じゃあそのときはlong long longは何になるんだ?
96ビット整数か?
340:デフォルトの名無しさん
14/04/26 12:22:22.08 J0aLOZMr
template<int n> LONGN{
typedef long typename LONGN<n - 1>::type type;
};
template<> LONGN<1>{
typedef long type;
};
LONGN<4>::type a; //long long long long a;
341:デフォルトの名無しさん
14/04/26 12:28:21.25 dMJ+hsKf
64bit OSでもLP64というモデルがあってですね…
342:デフォルトの名無しさん
14/04/26 12:50:15.63 H4OEZVXF
ここは超超超絶技巧でみたいな・・・
343:デフォルトの名無しさん
14/04/26 18:17:32.95 ynFN81Em
>>339
コンパイルエラーじゃないの?
344:デフォルトの名無しさん
14/04/26 19:31:52.70 rMovUfm2
very long signed integer っていう言葉がすでにあってですね VLSI などと呼ばれています、
その次は、ultra であることも決まってます ULSI ですね
345:デフォルトの名無しさん
14/04/26 20:20:43.53 ahYJ/99m
>>343
longとtypename LONGN<n - 1>::typeはそれぞれtrailing-type-specifierなので
複数回出現は不可と思われ
346:デフォルトの名無しさん
14/04/26 22:39:38.79 fIjhv7f7
>>345
どこに書いてあるの?
347:デフォルトの名無しさん
14/04/28 23:17:00.56 qD9oODa6
Visual C++でDICのプログラム作らなきゃあかんのだけど、なんか参考になる本とかサイトあったら教えて
348:デフォルトの名無しさん
14/04/28 23:22:01.11 kXaBUVy8
fcloseする前にfflushするべき?
349:デフォルトの名無しさん
14/04/28 23:24:00.60 CvTpEXXH
fcloseはまずfflushするからせんでもいい。
350:デフォルトの名無しさん
14/04/29 00:19:38.56 PvmweMHQ
>>349
どうもです
351:デフォルトの名無しさん
14/04/29 00:22:02.07 Br1Uxtes
>>345
long long int はNGなの?
352:デフォルトの名無しさん
14/04/29 03:41:24.36 c3V/vf3p
>>350
戻り値のエラーチェックを忘れずになー
ファイルクローズの失敗って致命的なはずなのにエラーチェックしないひと多い。
353:デフォルトの名無しさん
14/04/29 03:46:10.54 6FPZ981r
read、writeでエラー出てなかった時は、close全然気にしてなかったw
354:デフォルトの名無しさん
14/04/29 06:28:08.91 kVygpKR5
>>347
つ URLリンク(www.me.aoyama.ac.jp)
355:デフォルトの名無しさん
14/04/29 12:18:26.09 TvL0I6wZ
>>352
エラーチェックするのは良いとして、どう対処するの?
ユーザーへの通知くらいしか出来ないでOK?
356:デフォルトの名無しさん
14/04/29 12:46:31.98 cLunpA27
>>355
他のエラーと何が違うと思ってるの?
357:デフォルトの名無しさん
14/04/29 12:50:17.29 pH50e3ah
closeに失敗するようなパソコンを持ってる方が悪い
358:デフォルトの名無しさん
14/04/29 13:03:45.58 TvL0I6wZ
>>356
エラーにもよるけど、fcloseは失敗しても実質何もできない部類のエラーなんだけど、そこの意識は俺と合ってる?
359:デフォルトの名無しさん
14/04/29 13:13:46.40 rczhsOKu
>>358
メッセージ出すとか、リトライするとか、違うデバイスに保存し直せるようにダイアログ出すとか...
ちゃんと書けてないのにそ知らぬ顔してるアプリの作者はマジプログラマー辞めろと言いたい。
360:デフォルトの名無しさん
14/04/29 13:13:51.89 QmOywj8Q
>fcloseは失敗しても実質何もできない
そうやって問題が発生した事実を
利用者に隠すんですねわかります
361:デフォルトの名無しさん
14/04/29 13:18:00.13 cLunpA27
>>358
他のエラーと同じく通知も分岐もできるだろ。
繰り返しになるけど、何を以って他のエラーと違う「部類」になると思ってるの?
362:デフォルトの名無しさん
14/04/29 13:58:19.80 eNexNAiy
fcloseの仕様も読まずにリトライしろという馬鹿
363:デフォルトの名無しさん
14/04/29 14:03:54.68 TvL0I6wZ
>>359
結局、エラー通知しか出来ないって事でOK?
リトライするならfopenからやり直しになるけど、そこは認識合ってるかな?
364:デフォルトの名無しさん
14/04/29 14:04:40.27 VfEVh/tP
まあユーザへの通知ぐらいはしといた方がいいわな
ハンドル系は閉じる関数違えるミスが結構あるのでその予防にも
365:デフォルトの名無しさん
14/04/29 14:05:09.65 TvL0I6wZ
>>361
分岐って、、、そりゃ出来るけど、分岐してどうするかが知りたいんだけど。。。
366:デフォルトの名無しさん
14/04/29 14:09:39.88 cLunpA27
>>363,365
分岐したうえで perror("Closing file"); return EXIT_FAILURE; .だとか、fopen()からやりなおしだとか、
プログラムや対象のファイルに応じていくらでも考えられるだろ。
他のエラーと同じだと言ってる。
いい加減に何が違うと思ってるのか言ってくれ。
367:KAC
14/04/29 14:10:09.18 3cTlepGQ
普通に考えたらわかりそうなもんだけど。
データをファイルに保存する→エラーになった。
破棄する訳にはいかないからもう一度保存を試みる。
ってプログラムを作るのは別に変な話じゃない。
368:デフォルトの名無しさん
14/04/29 14:10:25.50 TvL0I6wZ
>>361
fcloseが他のエラーと違うのは、そのファイルポインタが一切使用できなくなるとこかな。
つまり、最初からやり直すしか手がない。
出来るなら有限でfopenからリトライするけど、そもそもローカルストレージ相手の場合、この手のリトライはあまり有効じゃないよね。
369:デフォルトの名無しさん
14/04/29 14:14:00.02 TvL0I6wZ
>>367
別に変じゃないけど、多くの場合あまり意味が無いよ。
ネットワークストレージじゃない限り、リトライで救えるケースてあまりないと思うんだけど、どう?
370:デフォルトの名無しさん
14/04/29 14:17:21.02 TvL0I6wZ
>>366
多くの場合でリトライが意味をなさない所。
つまり、エラー通知くらいしか対処法が無いって事でいいんだよね?
ネットワークストレージ以外で、リトライで救えるケースを教えてくれないか?
371:デフォルトの名無しさん
14/04/29 14:29:16.93 VfEVh/tP
1.USBストレージでユーザが早まって抜いちゃいました
2.「書き込みに失敗しました、リトライしますか?」
3.ユーザUSBを挿し直す(最近はLinuxなんかでも自動で同じマウントポイントにマウントされる)
4.fopenからやり直し→幸せ
372:KAC
14/04/29 14:29:21.87 3cTlepGQ
>>369
リトライといっても色々考えられるから。
別のストレージに緊急退避するってのもあるし、
異常の起きたものを待機系に切り替えてリトライってのもあるし、
パソコンとかならユーザーに保存先入力させるのもあるし。
関数レベルでリトライできないけどエラーを返す仕様になっているのはそういうこと。
373:デフォルトの名無しさん
14/04/29 14:30:58.54 cLunpA27
>>368-370
エラー通知しかできないことも多いだろうが、既に挙がっているリトライの例のように、それ以外の対処をすることだってあり得る。
通知以外の対処が有効かどうかってのはプログラムや操作対象に応じて変わるだろうとしか言えない。他のエラーと同じ。
「エラー通知くらいしか対処法が無い」を強弁して何がうれしいのかわからないので、エラー処理サボる口実が欲しいのかな?と思ってる。
374:デフォルトの名無しさん
14/04/29 14:52:10.17 TvL0I6wZ
>>373
>エラー処理サボる口実が欲しいのかな?と思ってる。
って言うか、これが全てだよね?
最初から喧嘩腰だった点で、ああ、俺のレスが気に入らなかったんだな、とは感じたよ。
誰もサボりたいなんて言ってはいないし、それは君の思い込みだった点は認めて欲しい。
単純にエラー処理すべ事例が思い浮かばなかったから、聞いてみただけだよ。
375:デフォルトの名無しさん
14/04/29 14:53:16.31 TvL0I6wZ
>>372
なるほど、確かにそう言う事例はありそうだね。
ありがとう、勉強になったよ。
376:デフォルトの名無しさん
14/04/29 14:55:47.85 TvL0I6wZ
>>371
活線挿抜(だっけ?)系のストレージか、確かに確かに。
SDカードの接触不良とかもありそうだなあ。
377:デフォルトの名無しさん
14/04/29 14:59:31.78 yMt+E2dH
ID:cLunpA27
が一番偉そうにしてるわりに一番無益な情報しか書いてない件
378:デフォルトの名無しさん
14/04/29 15:13:06.94 cLunpA27
>>374
サボりたいと思ってるわけじゃなかったのなら、確かにそこは思い込みだったよ。ごめん。
「エラー通知くらいしか対処法が無い」なんてことは無いのを理解してもらって、あとは
具体的に有効な対処をコーディング時点で知ってるかどうかに関わらずエラーチェックを
入れてくれてるなら文句は無いんだ。
379:デフォルトの名無しさん
14/04/29 16:20:13.81 +oyspTjV
ケースバイケースだろ。
プログラムの処理目的によっては、fcloseに失敗しようがどうでもいい場合もあるんだから、そういう場合にあえて書かなくたっていいでしょ。
まあ、癖としてエラー処理を書くようにするというのは悪いことではないと思うけど。何が何でも絶対にエラー処理を書かないといけない、みたいな原理主義はよくないでしょ。
380:デフォルトの名無しさん
14/04/29 16:55:31.42 VfEVh/tP
いや、これについては原理主義ぐらいがちょうどいいね
研究で書く捨てコードでさえ例外ぐらいは投げとくべき
年度末の追い込みの時期にバグ探しで泣くことになる
381:デフォルトの名無しさん
14/04/29 17:00:32.58 6FPZ981r
多分、直前のread、writeまでは正常に実行できて、closeしようとしたらエラーになった
疑わしいのはハードウェア障害。だからこのまま使い続けると致命的な問題が起こるかも知れない。
直前の処理結果が失敗してないか、ハードウエアの修理交換をする必要があるか、調べたりする。
警告を出すことは意味がありそう。
382:デフォルトの名無しさん
14/04/29 17:07:35.52 B/znruqO
可能性は考えたらきりがない
383:デフォルトの名無しさん
14/04/29 17:09:45.51 B/znruqO
すべてのエラーの可能性を汲み取ったからといって
後々の動作がすべてうまく動く保障などどこにもない
384:デフォルトの名無しさん
14/04/29 17:15:13.39 B/znruqO
コンシューマと違ってトンでも環境でプログラムを動かそうとする
典型的なキチガイユーザーは除外するに限る
385:デフォルトの名無しさん
14/04/29 17:27:52.73 kVygpKR5
割り込み禁止にしてしまえばいいんじゃね
386:デフォルトの名無しさん
14/04/29 18:14:20.81 /hP837aC
>>381みたいなのは経験上メモリ破壊とかただのバグの可能性が一番高い
387:デフォルトの名無しさん
14/04/29 18:51:14.18 u8cJRNln
//as-util.h
namespace as {
int open_or_die(const string& filename, int flags, int mode = 0) {
int fd = open(filename.c_str(), flags, mode);
if (fd == -1) {
fprintf(stderr, "Could not open %s (%s)\n", filename.c_str(), strerror(errno));
exit(-1);
}
return fd;
}
int write_file(const string& filename, const void* buff, unsigned int len)
{
int out_fd;
out_fd = open_or_die(filename, 33537, 384);
write(out_fd, buff, len);
return close(out_fd);
}
}
388:デフォルトの名無しさん
14/04/29 18:58:20.86 QpcbJXpT
しかしなぜファイルディスクリプタ使うようなC言語的コーディングしてるんだろう
C++のfstreamをつかわないのか
389:KAC
14/04/29 19:04:33.24 3cTlepGQ
>>387
えーと、そのソースで何を主張したいのかよく解らんけど
もしかしてツッコミ待ち?
390:デフォルトの名無しさん
14/04/29 19:12:26.80 QpcbJXpT
というか大多数の人はネット上にあふれるbetterCのコードパクって書いてる
だけなんじゃないかと・・・C++を書けよ、と煽ってみる
391:デフォルトの名無しさん
14/04/29 20:19:03.82 MWWV62uz
例外投げろってこと?
392:デフォルトの名無しさん
14/04/29 20:30:22.41 5kHCxYgx
RAII
393:デフォルトの名無しさん
14/04/29 21:12:04.85 8ogaN1qJ
>>388
fstreamはアレが気持ち悪いからいやだ
fprintfっぽいラッパ書けばいけるのだろうか・・・
394:デフォルトの名無しさん
14/04/29 23:21:41.41 GLIPATnB
sprintfで整形すれば解決 :-)
395:デフォルトの名無しさん
14/04/29 23:57:37.59 tzWpsPe5
>>393
streamが気持ち悪いとな
396:デフォルトの名無しさん
14/04/30 03:08:07.99 G3N8SJAi
食わず嫌いって奴だな
「生理的に受け付けない」から使わないってたぐい
397:デフォルトの名無しさん
14/04/30 03:19:58.03 6UO7iz+Z
std::cout << "フィーリング、大事" << "とても大事" << endl;
398:デフォルトの名無しさん
14/04/30 04:29:27.38 lAD+rioe
そもそも書き込み後のfclose()の失敗は、しばしばバッファのフラッシュによる書き込みの失敗なのは分かっているんだろうか。
読み込み後のfclose()でフォローが必要な失敗はほぼあり得ないのとはわけが違う。
399:デフォルトの名無しさん
14/04/30 07:48:46.64 +uCJ/EHs
printf("%s、とても大事","マユゲ");
400:デフォルトの名無しさん
14/04/30 08:02:11.79 cWCEN50W
printfの戻り値もちゃんと見ないと危ないよな。
401:デフォルトの名無しさん
14/04/30 08:10:03.25 6UO7iz+Z
printfがユーザへの進捗提示ならわざわざ見ない
標準出力に結果を出すタイプのプログラムなら当然見る
402:デフォルトの名無しさん
14/04/30 10:56:44.51 Cv22JJej
そして標準出力にエラー表示ですね、わかります
403:デフォルトの名無しさん
14/05/01 08:27:39.11 jd6Q9ZC+
そこは標準エラーに繋いでくれよ
404:デフォルトの名無しさん
14/05/01 09:56:10.26 Nc3v+u2j
出力先ではなく、目的でエラー処理をするかどうかを分けたい。
405:デフォルトの名無しさん
14/05/01 23:31:41.91 WBIpX+Sx
今どきそんな糞プログラム書いてる奴おるんやなw
406:デフォルトの名無しさん
14/05/01 23:46:29.89 aTJt6vU6
>>405
とりあえず上の書き込みには一人もいないようだが、職場にでもいるのか?
407:デフォルトの名無しさん
14/05/02 14:44:29.03 QC3YDLjT
>>398
そう、根本的なのはこういうことだよね。
読み取り専用なら最後になんかエラーでたなで無視しても大きな問題にはならないけど、書き込み時のclose失敗は書き込みエラーの可能性が高いから、出力したファイルは壊れてると思うべき。
やるべきエラー処置はその時々かなー
408:デフォルトの名無しさん
14/05/02 15:22:09.91 wOX1O7vl
世間ではマイクロソフトのInternet Explorerの
セキュリティ脆弱性が問題となっているけど
この会社は10年経っても学習しないんかね?
バッファオーバーラン対策なんて特別難しいわけでもないし、
いわゆる「バグの無いソフトウェアを開発することは困難」な類の問題でなくて
適切な開発プロセスを経ずに作られていることが問題だと思うんだ。
409:デフォルトの名無しさん
14/05/02 15:26:08.57 1eT74Y+3
何を今更
410:デフォルトの名無しさん
14/05/02 15:32:17.56 Ws6wlKTr
他のブラウザにも脆弱性あるだろうし、問題となっているのではなく、問題にしているだけだけど
411:デフォルトの名無しさん
14/05/02 15:41:31.52 lDfNkxxi
ニムダの失敗でget_sみたいな糞関数を広めて
Cの規格にまで入れさせた企業が
オーバーフローするとは嘆かわしい
412:デフォルトの名無しさん
14/05/02 15:55:15.70 1eT74Y+3
xxx_s セーフ関数郡は良い布教だと思うがね
ie は大昔から制作しているからその思想で創られていなかったと思われ
413:デフォルトの名無しさん
14/05/02 16:00:51.23 PStMJZn4
>ie は大昔から制作しているから
つまりWindowsオペレーティングシクテム自体が欠陥だらけ
414:デフォルトの名無しさん
14/05/02 16:02:20.30 1eT74Y+3
いや、ANSIの規格が欠陥だらけなんだよ
415:デフォルトの名無しさん
14/05/02 17:00:18.88 wV2eK816
>>414
なにいってんだ?
包丁で怪我したら包丁が欠陥なのか?
416:デフォルトの名無しさん
14/05/02 17:04:23.91 Ws6wlKTr
包丁で怪我したら人間のほうに欠陥あるわな
417:デフォルトの名無しさん
14/05/02 17:14:00.60 +HoqucNW
>>414
道具のせいにする奴は無能
418:デフォルトの名無しさん
14/05/02 17:19:08.17 CknGmgvF
つまり413が無能
419:デフォルトの名無しさん
14/05/02 17:22:18.84 jIwzpAmb
プロは間違った道具を使わない
420:デフォルトの名無しさん
14/05/02 17:29:50.65 +HoqucNW
無能な鷹は爪がない
421:デフォルトの名無しさん
14/05/02 18:38:37.06 a3LSTdDG
>>415
何を言ってるんだお前は。
使い方の問題じゃなくて使い方ではどうにもならない
getsみたいなKUSO関数が存在するってことだろ。
包丁は正しく使えばよいけど糞関数は正しく使うことが出来ないとKUSOなんだよ
422:デフォルトの名無しさん
14/05/02 18:55:57.81 K/1gjWeH
>>421
使えないとか意味不明
423: ◆QZaw55cn4c
14/05/02 19:33:38.47 uljkUnkD
いくら規格にあるからといっても, scanf()群とか,使った時点で「私は馬鹿です」といっているようなもの
自 分 の 頭 で 考 え よ う ね
424:デフォルトの名無しさん
14/05/02 20:21:06.60 u61DiI65
getsは擁護しようがないけど、scanfはまだいいじゃない……
(バイト数制限・バッファクリア等、意外に細かい処理まで行えるため)
いやまあ現実的にはcinなどのストリーム機構使った方がいいんだが
425: ◆QZaw55cn4c
14/05/02 22:26:12.79 uljkUnkD
データを取りそこなったときの扱いが見えないんです、*scanf() は。
ああ、馬鹿なのは私です‥‥
426:KAC
14/05/02 22:27:22.69 I4CxCkey
>>425
リターン値見ないのか?
427:デフォルトの名無しさん
14/05/02 22:31:22.33 JCTbZqGD
俺はfgetsで一行読んでからsscanfだな
428:デフォルトの名無しさん
14/05/02 22:36:57.53 uljkUnkD
>>426
問題はその後
ストリームには何が残っている?
>>427
それが一番わかりやすいね‥‥ま、なんだかんだいって sscanf() はよく使うね、fscanf() とか scanf() はよくわからないので避けるけれども
ごめんね矛盾したことをいっているね
429:デフォルトの名無しさん
14/05/02 22:38:10.04 u61DiI65
URLリンク(www.kijineko.co.jp)
430:デフォルトの名無しさん
14/05/02 23:17:10.56 uljkUnkD
>>429
いやもう scanf() 族のそんなややこしい書式指定を考えるくらいなら、自由長な fgets() を作って、あとで好きに parse する方を選びます
その url の記事はは結局 scanf() 族を使う限りオーバーフロー/アンダーフローを検出し得ないという問題は認めていますよね
結論:scanf() は使うな‥‥
431:デフォルトの名無しさん
14/05/03 00:31:10.73 NUTNzwaZ
UFC 128 - エリック・コク vs. ハファエル・アスンサオ
URLリンク(www.youtube.com)
UFC 134 - エリック・シウバ vs. ルイス・ラモス
URLリンク(www.youtube.com)
432:デフォルトの名無しさん
14/05/03 00:55:33.17 4wSZ1uzA
能ある鷹は見えないとこにピック隠すんです
433:デフォルトの名無しさん
14/05/03 01:34:21.62 uWeyjha1
なんかの歌詞だったような気がするが思い出せない・・・
434:デフォルトの名無しさん
14/05/03 01:40:01.06 cKwAiZbq
>>433
ひょっとして:Don't say "lazy"
435:デフォルトの名無しさん
14/05/03 01:44:23.55 uWeyjha1
>>434
あー、それかthx
436:デフォルトの名無しさん
14/05/04 01:03:01.96 tByDu0vN
アプリが自分で書いた中間ファイルのように
内容に関して保証ができているケースでなら、
fscanf()も使わないではないけどねぇ。
まぁ、大抵は設定ファイル用のクラスがあるから
それを使っちゃうけど。
437:デフォルトの名無しさん
14/05/06 09:55:48.60 5c9kkQ6j
宣言と定義の違いがわかりません。
Hに宣言、CPPに定義を書くのが普通らしいですが、
class a{};
なんてのたくさん見かけるのですが・・・
438:デフォルトの名無しさん
14/05/06 09:58:36.30 5ztZHmoZ
宣言は、概要
定義は、実体
と捉えると良いよ
439:デフォルトの名無しさん
14/05/06 10:02:29.99 5ztZHmoZ
本で例えるなら、
ヘッダの宣言が索引
ソースの定義が中身
440:デフォルトの名無しさん
14/05/06 10:08:33.24 5ztZHmoZ
本気で理解したければgccのプリプロセッサ走らせて出力された結果を見た方が早い
それ見て理解できなければ触らないほうがいい
441:デフォルトの名無しさん
14/05/06 18:02:55.83 Fm+h5E30
>>437
基本的には定義はプログラム中でひとつだけである必要がある(One Definition Rule という)ので
複数の翻訳単位(cppファイル)でインクルードされるヘッダファイルには書けない。そのため
ヘッダファイルには宣言だけを書くことになる。
ただしクラス定義やインライン関数など一部の定義は、厳密に同一である限り、別の翻訳単位に
複数あってもよいという特例があるので、ヘッダファイルに書いてもよい。
URLリンク(ezoeryou.github.io)
442:デフォルトの名無しさん
14/05/06 18:54:34.25 +RcwTu4z
>>438 嘘つくな
>>439 嘘つくな
>>441 リンク先には適切なことが書かれているが
お前のレスは回答になってない
443:デフォルトの名無しさん
14/05/06 19:20:23.59 5ztZHmoZ
class a{} がソースに書いてあってなんでかと疑問に思っているのなら、その class a といやつは、そのソース上でしか使わないこと前提としてコーダーが記述したとおもわれるよ。
別に宣言だからといってすべてをヘッダに記述しなくてもいいし、他のソースでも class a 参照したければ、ヘッダにかけばいいし、その場合はテンプレートでもなければ、定義と宣言にわけて書いたほうがオーバーヘッドも少なくて済むよ。
444:441
14/05/06 19:29:27.72 Fm+h5E30
>>442
元の>437の聞きたいことが曖昧な中で、ヘッダファイルにクラスの定義となるclass a{};なんてのが
書かれてるのをたくさん見かけるのを不思議に思ってるのかと思ったんだけど、違ったのか?
>437の聞きたいことがわかってるんなら書いてくれよ。そのまま回答してくれてもいいだろうし。
445:デフォルトの名無しさん
14/05/06 19:31:22.38 lUtiA3Gx
宣言と定義は441の通り。
HとCPPは他のCPPに見せる必用があるもののみをHに書いてそれ以外はCPP。
この二つの話は関係がない。