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/
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として用いれば大丈夫だろうね。
460 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 18:26:48 ] >>455 独習C++デザインパターンかなぁ。この手の本は殆どがJavaで書かれてるからC++の本は少ないな。
461 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 19:14:22 ] 「Java謎+落とし穴」という書籍の中でC++はリフレクションが弱い、との記述があったのですがこれは事実でしょうか? かなり古い本なので最近のC++のリフレクション周りについて知りたいです。 できればJava、C++、C#辺りのリフレクションの違いについて教えて頂けると有り難いです。 よろしくお願いします。
462 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 20:03:39 ] >>461 弱いどころか無いに等しいよ。 リフレクションが必要ならインタプリタ言語にまかせよう。
463 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 20:06:02 ] C/C++で、 aa(), bb(), cc() とした場合、この式の評価順序は aa()が最初で次がbb()で次がcc() ということは仕様で保証されていますか? 関数の引数の評価順序は保証されていないということだそうで。
464 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 20:15:32 ] >>463 この場合はコンマ演算子だから、左から右へ評価されることは保障されており、かつ値は最後に評価したものですね。
465 名前:463 mailto:sage [2009/08/15(土) 20:53:28 ] >>464 ありがとうございます。 ではそれに依存してコーディングしていきたいと思います。
466 名前:461 mailto:sage [2009/08/15(土) 21:07:09 ] >>462 ありがとうございます。 クラスやメソッドを実行時に決定したい場合などは諦めるしかないのでしょうか? あるいはそういう需要があること自体、設計がおかしいという判断になるのかな
467 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:11:00 ] >>466 > クラスやメソッドを実行時に決定したい場合などは諦めるしかないのでしょうか? C++には継承と仮想関数がありますからそれをうまく使ってください。 > あるいはそういう需要があること自体、設計がおかしいという判断になるのかな if(flag) {hoge.foo();} else {hoge.bar();} こんなことは良くやりますけど。 あとはC++には関数ポインタもありますねぇ。
468 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:21:59 ] 場合分けはさすがに無いだろw まぁJavaでもClassクラスなんて使うのは最終手段だし設計を見直すのが吉だろうな
469 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 21:36:03 ] >>466 ポリモーフィズムがあるんだから利用しない手はないだろ。 実行時に型を決定したいなんて結構あるんじゃないか? それがあってるのかどうかは知らんが。
470 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 22:20:55 ] C++プログラミングの筋と定石 (新紀元社情報工学シリーズ) この本を読むのじゃ。 お前様のほしい情報が載っておるぞ。 あたら高度だけど。
471 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 22:33:03 ] 滅茶苦茶古い本だぞそれ
472 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 22:57:12 ] 古いけどナイスガイ
473 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 22:58:16 ] 宣伝は他でやれ
474 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:01:16 ] 宣伝だと思うなら無視すればいいじゃない。 宣伝しなくても名著だからみんな知ってるだろうし。 MoreEffective C++でも推薦されてたくらいの本だから もちろん、君も知ってるよね?