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


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

C++相談室 part123



1 名前:デフォルトの名無しさん mailto:sage [2016/02/21(日) 16:36:27.08 ID:jZESqUY+.net]
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレに
お願いします。

前スレ
C++相談室 part122
peace.2ch.net/test/read.cgi/tech/1453557975/

このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.97【環境依存OK】
peace.2ch.net/test/read.cgi/tech/1439849418/

■長いソースを貼るときはここへ。■
 codepad.org/
 ideone.com/

116 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 22:26:19.05 ID:TnvXsjWd.net]
>>113
あのさ、ここは2チャンネルであって、基本的に初心者が集まる場所なんだよ?
昔とは違うんだ。わかるか?

117 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 23:38:42.62 ID:bRJMsBK5.net]
>>116
馬鹿の無根拠な妄言ktkr

118 名前:デフォルトの名無しさん mailto:sage [2016/02/27(土) 23:53:52.62 ID:TnvXsjWd.net]
もともとは>>109の発言

119 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 09:01:53.38 ID:p5UOgBYD.net]
昔ってなんだ? ネットニュースか?

120 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 09:51:52.96 ID:sxXcnRPc.net]
>>100
14歳からはじめるC言語オンラインゲームプログラミング
15歳からはじめるDirectX9 3Dゲームプログラミング教室
14歳からはじめるシリーズ~ あと二冊

121 名前:デフォルトの名無しさん [2016/02/28(日) 10:59:04.87 ID:yeDT/yDi.net]
Compositeデザインパターンでcomposite1のchildlenの型をcomponentの配列ではなくcomposite2の配列に限定し、composite2のchildrenはleafのみの配列に限定したいのですが、どのようにしたらいいのでしょうか?

122 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 13:29:41.30 ID:w64tNJjH.net]
それはコンポジットパターンなのか?

123 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 13:48:26.49 ID:5n5R60tK.net]
それだけじゃ型を明示しろよとしか思えんが

124 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 14:19:39.94 ID:tz1QY8TO.net]
そういうふうに組めばいいとしか言いようがない。
組む際に何がネックになってるのかね。



125 名前:デフォルトの名無しさん [2016/02/28(日) 17:19:18.45 ID:yeDT/yDi.net]
>>123
>>124
Compositeでchildrenの型としてComponentを用い、それを継承してComposite1とComposite2を作ったら
これらのchildrenの型が自動的にComponentになってしまうのでどこでどうやって型を明示すればよいのか困っております

126 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 17:35:13.98 ID:emPXsfmM.net]
型を限定したいとか明示したいとか言ってる時点でCompositeパターンを使うのは間違いなんじゃない?

127 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 18:05:44.76 ID:jJK+500Y.net]
配列要素の型を限定したい(componentの配列ではなくcomposite2の配列に限定したい)というのはいかんともし難い
配列要素の型を明示したいだけなら多態性がわかっていれば問題なくできるはず…

ただし、インスタンスの配列で多態性をやるには配列要素の型は基底クラスでなく派生クラスにする必要があり、
派生クラスが2種類(以上)あるcomponentパターンはできない

この場合の配列は基底クラスを指すポインタの配列であるべきなのでは…

※ 個人の感想です。

128 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 18:27:33.71 ID:fFRYdAaf.net]
配列を持つコンポーネントにして、visitorと組み合わせるってのはダメなのかな

129 名前:デフォルトの名無しさん [2016/02/28(日) 18:28:25.88 ID:yeDT/yDi.net]
>>122,>>126
Compositeパターンじゃなくてもいいのですが、childrenに対する操作は同じ操作がたくさんあるので継承したいのです。
しかしcomposite1はcomposite2にしかないメソッドを呼び出すこともあり、この時ダウンキャストするのを出来れば避けたいと思っております。
>>127
やはり限定するのは難しいですか……
すみません、
>配列要素の型を明示したいだけなら多態性がわかっていれば問題なくできるはず
というのは何を使って明示することを想定されているのか教えていただけないでしょうか?

130 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 19:11:55.42 ID:c40FCrwk.net]
登場人物がComposite1とComposite2とLeafだけなら、普通にComposite1::getChild()は
Composite2を返してComposite2はLeafを返せばいいだけだろ。

131 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 19:52:22.72 ID:PMSRihXY.net]
>>125
「これらのchildrenの型が自動的にComponentになってしまう」
↑ここが何かおかしい。んなわけねーだろ、と。
ほんとうにそんなところまで Composite が制約を加えてるなら、そこが問題。

>>129
ダウンキャストして済むならそれで済ませればいいだろうとも思う。
「避けたい」の具体的な理由があるのかと。

132 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 20:57:13.19 ID:gim467qR.net]
>>129
childrenに対する操作の一部を共通化したいだけなら、
こんな感じでCompositeに共通処理を集めるだけじゃ駄目かね。

template<class Child> class Composite { /* 共通処理 */ };
class Leaf { };
class Composite2 : public Composite<Leaf> { /* Leafだけの処理 */ };
class Composite1 : public Composite<Composite2> { /* Composite2だけの処理 */ };

133 名前:デフォルトの名無しさん [2016/02/28(日) 21:20:23.21 ID:yeDT/yDi.net]
>>131
class composite{
vector<shared_ptr<component> > children;
}

class composite1:public composite{
}

の形で実装したらcomposit1のchildrenはcomponentになると思っていましたが、違ったでしょうか?
ダウンキャストを避けたいのは単に私が管理しきれなくなりそうだからです

>>132
おっしゃる通りの実装で解決しました。
たしかにtemplateを使えば私の望む動きをしてくれます。
分かりやすく素晴らしい回答大変ありがとうございました。

134 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 21:27:42.44 ID:emPXsfmM.net]
妙に早いな



135 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 21:33:54.60 ID:PMSRihXY.net]
>>133
配列実体の持ち方を composite で決めてしまっているところが問題だということ。

class composite{
virtual component& nth_child(int n) = 0;
}

class composite1:public composite{
vector<shared_ptr<compisite2> > children;
}

こうしておけばよかったんじゃないかと思うんだけど >132 で解決したならいいかな。

136 名前:デフォルトの名無しさん mailto:sage [2016/02/28(日) 22:12:35.00 ID:jJK+500Y.net]
お禿げ様はインターフェースは一般に最初の基底クラスに全て集まる傾向にあるとはどっかに書いてたが
実装まで最初の基底クラスに集約するのが良い設計なのかどうか…

Cmposite1、Comosite2だけならまだしも
Cmposite3、Comosite4、…と増えていった場合に都度Compositeクラスのソースコードが編集され、肥大化していくんやで〜

137 名前:デフォルトの名無しさん mailto:sage [2016/02/29(月) 05:58:03.54 ID:j6jzPb2d.net]
Mixin的な使い方に限るなら問題ないでしょう。
継承が嫌なら、Compositeをメンバ変数にするとか、
vectorを受け取る関数テンプレート群にしてしまうとかすればいいし。

138 名前:デフォルトの名無しさん [2016/03/02(水) 23:08:12.47 ID:g3p9uXMc.net]
C++の質問です。

ウィンドウハンドルHWND型を数値化する方法をご教授下さい。

何をしたいのかというと、VisualStudio付属のspy++を使用して、
色々な事をしています。

spy++の各ウィンドウの「ウィンドウ」文字列の右にウィンドウハンドルID?のような、
ウィンドウ毎に一意につけられたIDが表示されています。
このIDを取得したいのです。

なのでウィンドウハンドルHWND型を数値化出来れば、上記spy++のウィンドウハンドルID?
と同じ物を取得できると考えました。

よって、ウィンドウハンドルHWND型を数値化する方法をご教授下さい。
※もしかしたら目的と実施しようとしている事が間違っているかもしれません
※その場合は正しくウィンドウハンドルID?を取得できる方法をご教授下さい

139 名前:デフォルトの名無しさん mailto:sage [2016/03/02(水) 23:26:29.94 ID:v5tMoIR7.net]
>>138
size_t id = reinterprete_cast<size_t>(hwnd);

140 名前:デフォルトの名無しさん mailto:sage [2016/03/02(水) 23:57:02.22 ID:9ZwWQH++.net]
なぜそこでstd::intptr_tでなくsize_tが出てくるのか不思議

141 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 05:25:34.43 ID:tlFkd89Q.net]
しかもreinterpret_cast<&size_t>じゃないとパンニングできないし

142 名前:デフォルトの名無しさん [2016/03/03(木) 05:55:57.70 ID:vKHIYEam.net]
uint32_t id = (uint32_t)(uintptr_t)hwnd;

で問題ないよ

143 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:01:02.75 ID:UnIH0jHm.net]
>>142
hwndが64ビットの可能性

144 名前:デフォルトの名無しさん [2016/03/03(木) 06:03:58.47 ID:vKHIYEam.net]
>>143
https://msdn.microsoft.com/en-us/library/windows/desktop/aa384203%28v=vs.85%29.aspx



145 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:18:15.21 ID:UnIH0jHm.net]
#include <cstdint>
uint32_t id = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(hwnd));

C++スタイルのキャスト、めんどい

146 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:22:38.14 ID:UnIH0jHm.net]
Windows限定ならcstdint要らないかな?

UINT id = static_cast<UINT>(reinterpret_cast<UINT_PTR>(hwnd));

147 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/03(木) 06:27:13.98 ID:UnIH0jHm.net]
Win16じゃ動かないんだな

148 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 06:42:45.53 ID:+JeDUCvS.net]
16ビットオブジェクトを出力できるコンパイラ未だもってんのか?

149 名前:デフォルトの名無しさん [2016/03/03(木) 08:31:20.27 ID:6K3/+EIJ.net]
>>138

ありがとう解決しました。
.Netの世界の文字列型に変換する必要があるので以下としました。
String^ hw_id = static_cast<UINT>(reinterpret_cast<UINT_PTR>(this->hw)).ToString("X");

150 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 08:36:11.53 ID:km2vGawV.net]
>>148
持ってるか?
って聞かれたら、
Visual C++ 1.52c が押し入れのどこかに眠ってるはず
って答えることにしてる

151 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 11:36:15.96 ID:DPHy8aYb.net]
>>148
昔手に入れたLSI Cの試食版の方ならたしかどこかに・・・

152 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 12:03:10.46 ID:mDpo7bQQ.net]
Cマガ電脳倶楽部

153 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 12:50:10.40 ID:ECv4uLci.net]
ビジアルシー2についてるのがある。

154 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 20:25:35.72 ID:km2vGawV.net]
>>153
それが >>150 だよ
大元の Visual C++ 2.0 は捨てたかも知らんけど、1.52c はなぜか捨てられない



155 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 20:47:49.02 ID:+JeDUCvS.net]
1.52って5.24" FDDだったりしない?

156 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 21:13:16.06 ID:km2vGawV.net]
>>155
単品売りは知らんけど 2.0 付属の奴は1995 年だから、1.52c も普通に CD-ROM だよ
https://ja.m.wikipedia.org/wiki/Microsoft_Visual_C%2B%2B#.E6.A6.82.E8.A6.81

157 名前:デフォルトの名無しさん mailto:sage [2016/03/03(木) 21:20:26.58 ID:+JeDUCvS.net]
そう言えば、32ビットWindowsもう動態保存してるの無いや

double spaceからサルベージするためにWin98SEをqemuかvboxにいれたイメージがどこかにあるはずだけど

158 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 09:04:28.30 ID:TYlQwhRh.net]
strcopyを代入演算子=に置き換えてみればわかるだろ

159 名前:デフォルトの名無しさん [2016/03/04(金) 10:00:38.32 ID:wO5/jJwK.net]
は?どこの誤爆だよ
それにstrcopyなんてものは聞いたこともないぞ
朝からクソ酔っ払ってる俺よりもトンチンカンな事書き込むってどんだけヤバイ薬やってるんだよ

160 名前:デフォルトの名無しさん mailto:sage [2016/03/04(金) 10:05:52.57 ID:4C3oKPHs.net]
俺に聞け

161 名前:デフォルトの名無しさん [2016/03/05(土) 16:26:40.97 ID:Uw046/hC.net]
初心者です。
c++で文字を入力するとそれを出力するものをビルドしたら、出力した後すぐにビルドが終わってしまいます。
出力後に画面を固定する方法はありませんか?

162 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 16:33:23.72 ID:yY6Am1xo.net]
ビルドじゃなくてデバッグ実行だろ?
ひとまずVSと仮定して、適当にブレークポイントでも打っとけば?

163 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 16:33:48.17 ID:niBmwPNn.net]
>>161
入力待ちを利用する

164 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 16:36:24.81 ID:TtOs9IsN.net]
環境を書かないと



165 名前:デフォルトの名無しさん [2016/03/05(土) 16:53:34.22 ID:Uw046/hC.net]
<<163
出来そうです。有難うございました。

166 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 17:01:13.18 ID:e8RWR+IR.net]
デバッガーで実行(F5)ではなく、デバッガー無しで実行(ctrl-F5)すれば良い

167 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 17:42:59.14 ID:u5sweskK.net]
いやそういう話じゃないし質問者は解決したみたいだから

168 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 18:15:07.47 ID:eQxVJDBh.net]
system("pause");

169 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 19:06:42.96 ID:e8RWR+IR.net]
いや、確実にそういう話だよ。
そういう話じゃないなら、どう言う話だよ。

170 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 19:35:57.25 ID:u5sweskK.net]
はあ?入力文字の出力直後にコンソール消えちゃった(泣)のありがちパターンに決まってるだろ
なんでそれが分らないんだよ

171 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 19:47:02.21 ID:oAjMaO0h.net]
>>170
だからそういう話だろう。

172 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 19:56:15.67 ID:u5sweskK.net]
>>171
もしかして、それがデバッガで実行するかそうじゃないかで変わるとでも思ってるのか?

173 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 19:57:35.25 ID:e8RWR+IR.net]
その、ありがちなパターンがどう言う状況で生じるのか、わからないのか?
PostMessage監視してろよ

174 名前:デフォルトの名無しさん [2016/03/05(土) 19:59:34.21 ID:e8RWR+IR.net]
>>172
もしかして、それがデバッガで実行するかそうじゃないかで変らないとでも思ってるのか?



175 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 20:00:46.88 ID:TtOs9IsN.net]
多分そうなんだろうけど、決めつけはしない方が良いかと

176 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 20:03:50.62 ID:45RldPY2.net]
PostMessageさんはもう許してやれよ

177 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 20:41:09.94 ID:e8RWR+IR.net]
>>175
俺の推測は完璧だ。
キミも後10年PostMessage監視してれば、「環境書け」とかバカのひとつ覚え繰り返さなくても済むようになるかもね。

178 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 20:41:10.45 ID:oAjMaO0h.net]
実際変わるよねぇ
VSだと。

179 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 21:15:14.82 ID:u5sweskK.net]
ホントだ知らんかったわ。どうなってるんだこれ?
でもデバッガ無しかどうかの問題じゃないわな

180 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 21:41:59.15 ID:NhCRzDCm.net]
みんなの書き込みがまるでわかんないんだけど
やっぱり PostMessage から勉強しなきゃいけないと、そういうこと…?

181 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 21:50:07.17 ID:u5sweskK.net]
>>177
たしかに俺はPostMessageについて書いた者だが
キミは
while (PostMessage(hWnd, WM_NULL, 0, 0))
と64メガのVirtualAllocで証明終了!君か
これをバカ呼ばわりされたのがよっぽど悔しかったみたいだな

CTRL-F5についてはいいことを教えてもらったよありがと
exe直接起動と振る舞いが違うんじゃ使うことはないだろうけど

もう一度言っておくけどキミがしつこく言ってる「PostMessageの失敗がメモリ不足の兆候になる」なんて俺は一言も言ってないからw

182 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 21:58:24.08 ID:e8RWR+IR.net]
>>181
自信満々で、物凄くあたま悪い発言をして、しかも、その頭悪さを理解してないバカは
日本中探してもそんなに多くは無い。


471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi

Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ

183 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 22:04:16.82 ID:u5sweskK.net]
>>182
それが「PostMessageの失敗がメモリアロケーション失敗の兆候を知ることが出来る」としか読めないわけか
そんなんだから
while (PostMessage(hWnd, WM_NULL, 0, 0))
と64メガのVirtualAllocで証明終了!
になっちゃうんだよCTRL-F5クン

184 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 22:17:53.94 ID:e8RWR+IR.net]
プライドだけ高いバカって始末に負えないな
ま、バカだから虚栄張ってないと世渡りできないんだろうが



185 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 22:21:58.02 ID:NhCRzDCm.net]
よくわかりました。ありがとう

186 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 22:43:46.74 ID:KlM00wBU.net]
環境はVC++2010です
セミコロン『;』について質問ですが

クラスの場合
class Test
{ ..... };
『}』の後ろに『;』がついています

class Test
{ ..... } obj ;
この様に『}』と『;』との間に記述すれば
『obj』というオブジェクトが生成
という事を最近知りました

構造体で同じことを試したら
オブジェクトが生成できました

配列、列挙体に同じ事をしたらエラーになります
配列、列挙体の『;』は何ですか?

187 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 22:52:37.60 ID:oAjMaO0h.net]
文の終端記号
文法上そうなっている。
変数定義構文だから。

配列がどういう記述をしているかはわからないが、enumでもいけるだろ。

namespaceは要らないのよね。

188 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 23:12:16.43 ID:xWrvFPw5.net]
ID:u5sweskK はコンソールアプリのデバッガ有り無しで動作が変わることも
知らなかったのに、結局偉そうなんだな
どうしようもないな
そんなことだからPostMessageなんだよ
サブスレッドから結果を返す為にPostMessage使ったんだって?バカ

189 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 23:29:40.33 ID:oC+37Qlp.net]
valgrind使いものにならないさんか。
Visual Studioの挙動も知らずposix環境のツールも使えず一体何だったら知ってるんだろうか?

190 名前:デフォルトの名無しさん mailto:sage [2016/03/05(土) 23:42:02.63 ID:VRv8TvnQ.net]
え、valgrind使い物にならないも、postmessageさんなの?
だとしたら、ほんとすげぇなwww

191 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:05:21.79 ID:ChxbUFgQ.net]
10年以上前にPostMessageを駆使した監視プログラム作ったらしい
会社勤めなら中堅どころなはずだが、これだけ無能な奴も珍しい
良く辞めずに続いてると思う

己の無能さを理解出来ないバカが最強って事だな

192 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:11:04.70 ID:LHysMdWz.net]
だいぶ前にclassのデフォルトアクセス範囲をpublicにすべきっていってたのもpostMessageさんな気がする

193 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:13:58.16 ID:FS9V5eXL.net]
いつまでこのネタをひっぱるんだろう
そんなに話題がないのか?
終わってる言語なのか?

194 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:19:35.66 ID:Brtwb7pX.net]
構文解析のオススメ書籍教えてください



195 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:26:27.79 ID:Vcl9wz74.net]
namespaceをどう使えばいいかわかりません。
基本的に○○.hのクラスの中で定義して、○○.cppで実装すれば良いのでは?、と考えています。
namespaceを利用する理由は何ですか?

196 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/06(日) 00:31:44.13 ID:EizY3BRi.net]
>>195
他の人が作ったソースを参照するときに名前が衝突しないようにするためだろうね。

197 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:33:35.07 ID:R4Ql0hHb.net]
いろんなところからライブラリを持ってきてくっつけてアプリケーションを開発するのに、クラスや関数に名前やシグネチャかぶりがあったらコンパイル通らないじゃないか。

198 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:34:08.24 ID:LHysMdWz.net]
>>195
名前だけで個人を識別してくださいって言われたらどう思う?
いやいや苗字もあったほうが識別しやすいよと思うだろ?
そんな時に使うんだよ

199 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/06(日) 00:50:13.80 ID:EizY3BRi.net]
std::shared_ptrとboost::shared_ptrという二種類のshared_ptrがある。
stdとboostという2つのnamespaceにより同時に使っても名前は衝突しない。
また、using std::shared_ptr;のようにしてshared_ptrを切り替えて使うことができる。

200 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:53:06.89 ID:0RQOBmjP.net]
同じネームスペースの{}内に属しているクラスや関数同士で
定義の前後関係なく後ろにあるものも参照できるようになるのはいつですか?
いわゆる後方参照?と呼ばれるものだと思うのですが

今でも、同じクラス内に有るクラスやメソッドは記述の前後関係なく参照できますが
同じクラス内に定義が有るものは後方参照が可能な理由は、私が思うに
「同じクラス内に存在している」->「同一コンパイル単位に存在している」
という式が成り立つからだと思うんですよ
C++は分割コンパイルをサポートしている上に、C譲りのヘッダシステムなので
コンパイル単位を跨いで後方参照をするのが無理なのはわかります
そこで、同一クラス内に定義が有るなら必ず同じコンパイル単位に属するのは明白なので
これをもって、後方参照が可能になっているのかと
だったら、同じように同一ネームスペースの{}内に定義が有るクラスや関数も必ず同一コンパイル単位なわけですから
(何故なら{}は必ず対応していなければならないのだから)
後方参照が出来ても問題ないように思うのですが

細かいことを抜きにして、同一コンパイル単位内であれば後方参照が可能になれば良いんですが
部分的には既にできているわけですし

201 名前:片山博文MZ ◆T6xkBnTXz7B0 mailto:sage [2016/03/06(日) 00:55:01.26 ID:EizY3BRi.net]
また、名前空間というまとまりがあることも重要だ。
まとまりがなければ、プロジェクト全体を見ることになって、維持コストがかかる。

202 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:57:14.96 ID:PT9uiEbB.net]
>同一ネームスペースの{}内に定義が有るクラスや関数も必ず同一コンパイル単位
え?

203 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 00:58:30.86 ID:2oASoSJR.net]
10年前にPostMessageを使った監視プログラムを発明した奴に
リファレンスも読めずマトモに反論出来なかった低能の自演がまだ続くのか

204 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 01:05:53.01 ID:2oASoSJR.net]
>>187
>文の終端記号
規格のどこを読むとそうなるのかkwsk



205 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 01:16:52.82 ID:2oASoSJR.net]
>>189
>posix環境のツールも使えず
ほうほう、valgrindが一体POSIXの第何章で規定されているのですか?

206 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 02:17:18.54 ID:tuNXTXW3.net]
>>184
いやー>>165で質問者が「入力待ちを利用する」という正しい方法で解決してるのに
しゃしゃり出てきてCTRL-F5などというバッドノウハウを披露するキミの捻れたプライドには到底及ばないよ

207 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 02:29:09.64 ID:tuNXTXW3.net]
よっぽどPostMessageがウケたみたいだけど
今ではWindowsでもLinuxでもメモリリーク検出とかにはInspector(インテル)を使ってるよ

208 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 04:05:47.59 ID:ChxbUFgQ.net]
こいつ本物のヴァカだ

209 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 04:07:10.17 ID:ChxbUFgQ.net]
471 デフォルトの名無しさん[sage] 2016/02/09(火) 08:07:47.87 ID:GGDlYrLi

Windowsでエクスプローラその他殆どのアプリがメモリ不足死んだ状態でも生き残らななきゃ
いけないシステム監視ソフトを書いたことがある俺に言わせるとそれほど難しいことじゃない
Windowsの場合、メモリアロケーションに失敗する前にPostMessageが失敗するようになるから
その辺に対応するのがコツ

210 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 04:47:19.07 ID:Vcl9wz74.net]
>>196->>199
よくわかりました。
ありがとうございます。

211 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 06:01:58.25 ID:2oASoSJR.net]
最初>>167>>206の考えで言っているのだろうと思っていたら
>>179のレスで少し驚いた

212 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 06:10:40.49 ID:1plcRuJs.net]
他の言語からの移行組ですが正直吐き気が止まりません
この言語は頭おかしいんじゃないんですか?

213 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 07:52:12.28 ID:r0r1JwnR.net]
言語自体が「頭おかしい」かは分からないけど…。

ストラウストラップ先生は頭(の外観が)おかしい。
規格の変化の激しさ(不安定さ)を見ると規格作成者は頭おかしい。
このスレッドの住人も頭おかしい(この発言の投稿者も含む)。

C++の村へようこそ。

214 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 08:10:32.19 ID:oNsCkDHW.net]
C#の自動実装プロパティみたいなの実装される予定ある?



215 名前:デフォルトの名無しさん [2016/03/06(日) 08:29:03.39 ID:py9p5YRa.net]
>>187
どうもありがとう
enumも通りました
列挙型は列挙子しか代入できない事を理解していませんでした

enum E
{
a, b, c, d
}e;

int main()
{
cout << e << endl; //0

e = a;
cout << e << endl; //0
e = d;
cout << e << endl; //3
e = (E)1;
cout << e << endl; //1
}

配列は調査中です

216 名前:デフォルトの名無しさん mailto:sage [2016/03/06(日) 10:32:12.23 ID:tuNXTXW3.net]
>>209
お前は粘着根性だけは一級だ。そこだけは褒めてやるよ
ところで、CTRL-F5で「続行するには何かキーを押してださい」
が出てくるかどうかはVSのバージョンによるようだな
例えばVS2010のデフォルトで作ったコンソールアプリプロジェクトじゃそうはならなずにコンソールすぐ消える
まあ、俺はそんなあやふやなものは永遠に使うことはないだろうけど、豆知識として頭の片隅に置いておくよ
何故そういう違いが発生するのかもおかげさまで調べたらすぐに分かったし。ありがと






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

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

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