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


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

スレを勃てるまでもないC/C++の質問はここで 12



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/

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++でも推薦されてたくらいの本だから
もちろん、君も知ってるよね?



475 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:23:04 ]
あぁ原書は有名だけど翻訳が糞過ぎて読む気無くなったなそれ

476 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 23:25:28 ]
どう見ても宣伝だわw

477 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 19:02:57 ]
Baseクラスと、Baseをpublic継承したDerivedクラスがあります。

Derived hoge;
void foo(const Base&);//1
void foo(const Derived&);//2

となっている時、
foo()//1にhogeを渡したいのですが、どうすればよいでしょうか?

foo(static_cast<Base>(hoge));
だと無駄なテンポラリオブジェクトができてしまいますか?



478 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 19:41:38 ]
// 値型のキャストだとコピーになるが、参照型でキャストすればコピーは発生しない
foo(static_cast<Base&>(hoge));

479 名前:477 mailto:sage [2009/08/16(日) 20:00:14 ]
>>478
ありがとうございます。

ということは
Derived hoge;

const Derived& hoge = ...
であった場合は
foo(static_cast< const Base& >(hoge));
であっていますか?

480 名前:デフォルトの名無しさん [2009/08/16(日) 20:01:39 ]
C++でもassertって使うの?

481 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:15:06 ]
#include <iostream>
using namespace std;
class Base{};
class Derived : public Base {};

void foo(const Base&){cout << "Base" << endl;}
template<class T>
void foo(const T&){cout << "T" << endl;}

int main()
{
Derived hoge;
foo(hoge);
return 0;
}

これでTが表示されるのは、
基底クラスへキャストするよりもテンプレートの方が優先される
ためだと思いますが、
この動作はC++の仕様でしょうか?

482 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 20:37:48 ]
>>480
使うよ。用途はCと一緒でしょ。

483 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 21:28:27 ]
C++です。

ヘッダファイルに書かれた関数テンプレートを
どんなときにinline宣言すべきか分かりません。
明らかに短い時はinline宣言しますが、
どのあたりの長さからしない方がよくなるのでしょうか?

484 名前:デフォルトの名無しさん [2009/08/16(日) 21:35:07 ]
ほっとけばinline



485 名前:483 mailto:sage [2009/08/16(日) 21:38:31 ]
>>484
ええと、ヘッダファイルに書かれた関数テンプレートでも
明示的にinlineと書かない限り
(コンパイラによる最適化以外では)
inlineにはならないと思っているのですが。


486 名前:デフォルトの名無しさん [2009/08/16(日) 21:50:02 ]
異なるcppファイルに同じヘッダを読み込んで、各々のオブジェクトファイルで実体化されたら
リンク時にカチ合うじゃないか。






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

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

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