1 名前:デフォルトの名無しさん [2009/07/19(日) 22:32:32 ] スレを勃てるまでもない低俗なC/C++の質問はここでお願いします。 過去ログ スレを勃てるまでもないC/C++の質問はここで pc11.2ch.net/test/read.cgi/tech/1167476845/ スレを勃てるまでもないC/C++の質問はここで 2 pc11.2ch.net/test/read.cgi/tech/1178503366/ スレを勃てるまでもないC/C++の質問はここで 3 pc11.2ch.net/test/read.cgi/tech/1187521676/ スレを勃てるまでもないC/C++の質問はここで 4 pc11.2ch.net/test/read.cgi/tech/1221633708/ スレを勃てるまでもないC/C++の質問はここで 5 pc11.2ch.net/test/read.cgi/tech/1230516307/ スレを勃てるまでもないC/C++の質問はここで 6 pc11.2ch.net/test/read.cgi/tech/1231564903/ スレを勃てるまでもないC/C++の質問はここで 7 pc11.2ch.net/test/read.cgi/tech/1232983248/ スレを勃てるまでもないC/C++の質問はここで 8 pc12.2ch.net/test/read.cgi/tech/1235921779/ スレを勃てるまでもないC/C++の質問はここで 9 pc12.2ch.net/test/read.cgi/tech/1240022781/ スレを勃てるまでもないC/C++の質問はここで 10 pc12.2ch.net/test/read.cgi/tech/1242300936/ スレを勃てるまでもないC/C++の質問はここで 11 pc12.2ch.net/test/read.cgi/tech/1245059383/
359 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 20:28:12 ] class hoge { public: static fuga(); }; これって普通の関数と比べてなんかいいことあんの?
360 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 20:35:16 ] >>359 静的メンバ関数でググれ
361 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 20:38:17 ] >>359 1・それがいいか悪いかは別として、似たようなstatic関数が100個くらいあったとき まとめて他のクラスのfriendにできる 2・hogeのstaticじゃないprivateなメンバに触れる
362 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 20:55:02 ] あぁプライベートメンバに触れるのかそれは便利そうだ 二項演算しとかに使えそう
363 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 20:59:09 ] とおもったらオペレーターは静的にできなかった・・・ ぬかよろこびだったでござる
364 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:33:44 ] てか、コンストラクタをprivateにしてstaticなファクトリ作るくらいじゃない?
365 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 21:44:24 ] >>359 コールバック関数に使える。
366 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:04:07 ] ttp://codepad.org/84SNOtSp の std::numeric_limits< double >::quiet_NaN()==std::numeric_limits< double >::quiet_NaN() の部分はfalseとなるようですが、 これは言語仕様そうなるものですか? それとも実装依存でしょうか?
367 名前:366 mailto:sage [2009/08/11(火) 22:05:34 ] なお、 g++, VC++2008に食わせた後実行したらttp://codepad.org/84SNOtSpと同じ結果でしたが、 bccに食わせた後実行したらその実行ファイルは不正終了しました。 > これは言語仕様そうなるものですか?
368 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:22:22 ] ttp://codepad.org/LEWBiHCD VC++だと実行結果が100になる この記述でコピコンが呼ばれるかどうかは仕様で決まってないのかな
369 名前:367 mailto:sage [2009/08/11(火) 22:26:58 ] >>368 私の環境のg++ 4.4.0では100になりましたよ。 bcc 5.5.1でも100になりましたよ。 codepadが100にならないのは不思議ですね。
370 名前:デフォルトの名無しさん [2009/08/11(火) 22:33:58 ] >>342 の知ったかバカ >>337 の質問が >deleteで解放をし忘れしているプログラムを何度も動かした場合、 >不要なデータはPC上に残り続けるんでしょうか? という内容で、 >>338 の回答が >一度プログラムを終了させれば という、限定された条件なんだけど、わかってるのかね?
371 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 22:36:28 ] >>366 TがNaNである値nを持つとき、 型Tの値nがNaNである ⇔ すべてのTの値xに対してx ≠ nである ゆえにNaN ≠ NaNである quet_NaNは型がNaN値を持つとき、 LIA-1(ISO/IEC 10967-1)の要求を満たすとあるので(ISO/IEC 14882:1998 18.2.1.2.45) 恐らく規格準拠だと思うよ 詳しくはC++98とLIA-1をあたってくれ 多分NaNに関してはLIA-1に1段落目で書いたことのようなものが載ってる筈
372 名前:366 mailto:sage [2009/08/11(火) 22:39:12 ] >>371 ありがとうございます。 助かりました。
373 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 00:12:29 ] codepad.org/oRku7d6S www1.axfc.net/uploader/Img/so/55595 二回目のバイナリ書き込みがなぜかテキスト書き込みになってしまいます なぜでしょう?
374 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 01:52:18 ] >>373 おおざっぱに言うと、式の中にcharが出てくるとint型に拡張される。「汎整数昇格」で検索すると解説が出てくるかも。 だから2回めの書き込みは、cout << (int)(ch * 2) と同じこと。
375 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 02:03:11 ] >>370 どうした? >>337 >>338 >>342 の流れはfreeしなくていいよ派の滞りない流れではないか?
376 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 03:10:30 ] もしかして、単に優越感に浸りたいだけの基地外さん? もしかして、単に優越感に浸りたいためだけに、自分に都合の良い解釈しかしない人?
377 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 03:19:45 ] バカは相手にすんな
378 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 03:41:01 ] >>375 342はfreeしろ派じゃねーの?
379 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 04:04:11 ] freeしろ派があのリンク先を持ってくるかなあ? リンク先を見た上で、しかしこういう考えのもと、やはりfreeすべきだという内容がレスにあるわけでもないし
380 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 04:41:00 ] いい加減freeの話題で荒れるのは勘弁してくれないかな。
381 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 05:16:11 ] 今までの話を纏めると 結論:必ずfreeすべし
382 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 05:47:53 ] この話は明示的なメモリの解放を行うことができる言語がある限り繰り返されると思うよ 片手間で作ったちょっとしたツールでせっせと例外捕捉して必死でメモリ解放するとかやってられんしょ
383 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 09:44:43 ] >>374 その解釈はおかしい。 何故ならば、ch * 2が既にintだと言っているのだから(int)(ch * 2)は(int)(int)....(ch * 2)と言う位意味がない。 敢えてその顰に倣って書くのなら、(int)ch * 2と言った処だろう。
384 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:38:32 ] ていうかバイナリモードで開いてるのになんで文字としての数字が保存されてんの? って聞きたかったんすけど・・・
385 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:40:27 ] >>384 std::cout << '0'としても、std::cout << 0としても出力が同じなのと同じ理由。 バイナリモードかどうかは全く関係ない。ついでに言えば、大抵のOSではテキストモードとバイナリモードの違いさえない。
386 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 12:45:57 ] テキストモードでオープンすると '\032' から先を読まない処理系が昔あったなあ。
387 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 16:59:09 ] class Hoge { operator double(){return 1.0;} }; というクラスがあるとき Hoge e; printf("%f\n", e ); と言うコードはコンパイルが通りますが、表示されるのは1.0ではありませんでした eは何型にキャストされてからprintfに渡されているんですか?
388 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 17:07:20 ] >>387 キャストされないで、Hogeのままスタックに詰まれる。 それみたいにメンバ変数のないクラスのでやるとどうなるかしらないけど。
389 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 17:10:58 ] 正確には、もうひとつのインスタンスが (コピーコンストラクタを使って)スタック上に作られる、ってことだね。
390 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 17:27:39 ] >>388-389 ということは、やりたいようなことはたぶん出来ないんですね 面倒でも(double)eとするしかないと ありがとうございました
391 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:02:12 ] >>386 \032って何ですか?
392 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:14:04 ] >>391 Control-Z。MS-DOSやCP/MのEOF文字 CP/MというOSではファイルサイズを128の倍数でしか管理できなかったので、 データの最後にEOFをつける必要があった
393 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 18:29:35 ] >>384 じゃあ何が保存されればいいの?
394 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 19:00:57 ] >>392 ありがとうございます。
395 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 21:04:36 ] 安西先生、引き数と返り値の型も隠蔽したいです
396 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:00:45 ] c++で2重起動を防止する方法を教えてください。 環境linux+gccです
397 名前:デフォルトの名無しさん mailto:sage [2009/08/12(水) 22:18:02 ] セマフォを使う
398 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 01:43:06 ] mutex
399 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:13:12 ] class hoge { public: class foo {...}; foo fuga(); }; こんな場合って普通fooの定義は外にだすもん?
400 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:21:56 ] >>399 クラスのネストくらいふつーだと思う。
401 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:28:08 ] クラス内クラス定義はpimplイディオムなんかの時に普通につかうよ
402 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:30:13 ] >>401
403 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 22:45:43 ] >>399 そういうことをやり始めたあたりから楽しくなってくるんだぜ(笑)
404 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:10:16 ] 前スレで登場したテンプレートを 適当に貼り付けてみる。 template<typename T, std::size_t N> inline std::size_t numberof(T (&)[N]) {return N;} まだまだ納得できない俺がいる。
405 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:15:13 ] ray.sakura.ne.jp/template/ccgen.html これのバブルソートのテンプレート化も面白いな
406 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:35:31 ] >汎用性の為に速度が犠牲になつてしまふことは、なんとしても避けなければならない。 執念が感じられるな(笑)
407 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:37:24 ] メンテ性悪すぎワラタ
408 名前:デフォルトの名無しさん mailto:sage [2009/08/13(木) 23:47:03 ] 何かあったんだろうなw
409 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 00:10:52 ] C/C++で書くのは実行速度気にするからで間違った方向じゃないと思うがね アセンブラやFORTRANでブイブイ云わせてるオッチャンは失笑するかもしれんけど
410 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 04:13:44 ] 同じ関数にわたす引数が場面によって違う場合、どうするのが一般的ですか? パターン1: if( case == 1 ) test( a, c, d, e, f); else test( b, c, d, e, f ); パターン2: if( case == 1 ) temp = a; else temp = b; test( temp, c, d, e, f ); このどちらかでいいじゃん、と思われたかもしれませんが パターン1の場合、引数リストが10行近くに渡る場合、 引数1つの違いのために10行余計に食うハメになります・・・ パターン2の場合は、1つの引数のためにわざわざ tempを用いてるのが醜いです 引数リストの中でif文を使えるようなら、 それが一番いいイメージなのですが・・・
411 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 04:40:19 ] 3項演算子でググれ
412 名前:412 mailto:sage [2009/08/14(金) 06:01:09 ] できました。ありがとうございます
413 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 09:17:37 ] >>412 自己完結乙。
414 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 17:24:44 ] privateなstaticメンバ変数と 無名名前空間内の変数ってどうちがうんでさ?
415 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 17:36:16 ] >>414 どういうソースのこと?
416 名前:デフォルトの名無しさん [2009/08/14(金) 17:42:44 ] Cの勉強を始めたばかりなんだけど、メモ帳に、参考書にある通りのソースプログラムを書いてリターンキーを押しても実行結果が表示されません。 原因を教えてください。
417 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 17:45:13 ] >>416 釣り?マジ?
418 名前:デフォルトの名無しさん [2009/08/14(金) 17:48:21 ] >>417 マジです。
419 名前:デフォルトの名無しさん [2009/08/14(金) 17:53:50 ] 俺は、ちゃんと実行されるけど、 不正コピーのWindows使ってるから、動かないのじゃね?
420 名前:デフォルトの名無しさん [2009/08/14(金) 18:04:20 ] 普通のXPを使ってます。 リターンキーを押しても改行されるだけなんですが(T_T)
421 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 18:08:58 ] その糞参考書を晒せ
422 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 18:14:42 ] これはたしかに参考書が気になる
423 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 18:20:25 ] 以前もさらっと「コンパイルが必要です」ってある参考書ではまってた奴がいたような。
424 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 18:42:14 ] >>415 class pool { private: static map m; (ry }; みたいなコード これだと無名グローバル変数でもいいように思えるんだけど・・・
425 名前:417 mailto:sage [2009/08/14(金) 18:44:07 ] codepad ttp://codepad.org/ ここで実行しろ。
426 名前:415 mailto:sage [2009/08/14(金) 18:44:58 ] >>424 poolの外からmにアクセス出来なくね?
427 名前:デフォルトの名無しさん [2009/08/14(金) 18:57:08 ] 『明解C言語 入門編』 です。 これって名著と聞いてますが。
428 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 19:06:43 ] 良く売れてますよ。 でも、C言語の入門書でK&R第2版を超えるものはひとつもありません。 特にUNIXシステムインタフェースの章は重要で、 システム依存のコード(システムコールを用いるコード)とどのように折り合いをつけるか、 平易に説明してくれる入門書はこれくらいのものでしょう。 結局、C言語はアセンブラに近しいところで利用されるので このような低水準の話題は避けて通れないのです。 でも日本人が書いた入門書はそのへん全部無視しやがってアホか。
429 名前:デフォルトの名無しさん [2009/08/14(金) 19:17:12 ] >>428 ありがとうです。 K&Rの正式な書名をよかったら。書店で探してみます。
430 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 19:19:56 ] プログラミング言語C 第2版 ANSI規格準拠 B.W. カーニハン (著), D.M. リッチー (著), 石田 晴久 (翻訳)
431 名前:デフォルトの名無しさん [2009/08/14(金) 19:34:26 ] >>430 ありがとうです。 明日さっそく書店へ行きます。
432 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 19:54:38 ] >>416 入力した c ソースをコンパイルして、実行ファイルを指定して実行していますか? 意味がわからなければ、さわりでコンパイルの方法が書いてある書籍をさがすか、人にきいてみてください。
433 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 19:55:53 ] >>431 最初の最初に読む書籍ではないことに注意してください。ある程度の経験が必要です。
434 名前:デフォルトの名無しさん [2009/08/14(金) 20:13:44 ] 最初の最初に読むのにいい本があったら教えて、誰かエロい人!
435 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:18:29 ] 書籍スレへどうぞ。
436 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:18:39 ] もともとC言語を他の言語の経験なしに最初に学ぼうという時点で無謀だ。w せいぜいテキストファイルを読み込んで集計する程度のプログラムしか書かないなら C言語を使う理由など皆無に等しく、そんなものはBASICで十分だろう。 C言語は(BASICに比べれば)難解で保守しにくく、 それでもなおC言語を使うのはC言語には低水準固有のパワーが備わっているからだ。 そういうプログラムを書きたいと望むものが K&Rの内容も読めないなら、 実際にプログラムをしようとしたとき、 C言語よりも遥かに難解なハードやOSを前にして ただただ途方にくれるだけだろう。
437 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:19:09 ] 入門レベルならWebでいいんじゃねぇの
438 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:28:47 ] BASICってVisualBasic? Cより難解で複雑で混沌としてんじゃねーか
439 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:30:36 ] 最初にC習って特に問題なかった俺は天才ということだな
440 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:44:06 ] >>439 俺もだ、天才同志よ。
441 名前:デフォルトの名無しさん [2009/08/14(金) 20:45:19 ] C言語だとファイルの削除はremove(fileName)でできましたが、 C++だとどうやってファイルを削除しますか?
442 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:50:55 ] std::remove(fileName)
443 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 20:52:40 ] >>442 ありがとうございます。 チュ♥
444 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:13:13 ] STDMETHODってなんでしょうか?
445 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:23:40 ] COMで使われるマクロです
446 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 21:27:03 ] そんな用語はないよ?
447 名前:デフォルトの名無しさん [2009/08/14(金) 21:31:45 ] 俺も秀才なんで、Cから始めます。
448 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 22:12:18 ] 俺おくてだから、勇気を出してCから始めます。
449 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 22:20:34 ] vecterとかmapのデフォルトコンストラクタってメモリ確保しないよね?
450 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 22:58:41 ] 実装依存だから確実ではないけど、普通は確保しないよ。
451 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:08:57 ] stlportって何ですか? ググってみると良いことずくめに書いてあるんですが。
452 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:33:47 ] 演算子のオーバーロードを勉強中です。 コンパイルエラー出ます。本のサンプルプログラムなんですが。 a.c:17: error: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second: string.h:21: note: candidate 1: char& String::operator[](size_t) a.c:17: note: candidate 2: operator[](char*, int) <built-in> です。原因は何でしょうか?エラーメッセージがよくわかりません。 もし、ソースコードが必要なら乗せます。
453 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 00:34:37 ] >>438 が釣りなのかどうか判断つかん
454 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 08:02:56 ] >>452 必要に決まってるじゃん。 codepad ttp://codepad.org/ ここで。
455 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 14:37:26 ] C++のサンプルコードが載ってるデザインパターンの本で良書あります?
456 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 15:43:32 ] >>451 VC6のころは必須だった。 今は別になくてもいい。
457 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:39:41 ] ゲーム内に存在するユニット(プレイヤー、モンスター、障害物など)にユニークIDを付けたいんだけど アドレスをintにして返すだけの基底クラスを継承させれば問題ないかな?
458 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:48:24 ] アドレスをハッシュにするのはよくある手段だな ポインタ型のサイズが変わったときにちょっとハマるかもしれんから ハッシュ同士を==,!=で比較する以外の使い方をするときには注意が必要になるだろう できれば専用の型でラップして使うべきだろうな
459 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 17:56:05 ] intptr_tなりUINT_PTRなりをtypedefしてxxx_IDとして用いれば大丈夫だろうね。