[表示 : 全て 最新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/

347 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:29:05 ]
>>344
まて、その前にクラスはまともに使えるのか?
例えば
>>333
この様なclass Aとclass Bを記述することは出来るだけの技量はある?

348 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:36:51 ]
クラスは普通に使ってます。
というかこの質問が、同じクラスのメンバ変数が2タイプに分かれる場合があって、

2つ変数を設けて片方を空っぽにするのが気持ち悪いので、共用体を使おうとしてるのです
(初期化関数を統一したいのもあります)

ただ「共用体にコンストラクタを設ける」といわれるとなんのことやら・・・
共用体がクラスのように扱える、ということでしょうか

349 名前:342 mailto:sage [2009/08/11(火) 11:39:39 ]
>>343
こいつ(は無知なのに「全く違う」という強い否定を使い
それが全くの初歩の話題であったことを知り)
恥ずかしい(とさぞかし思っているだろう)なwww

で満足?

350 名前:343 mailto:sage [2009/08/11(火) 11:41:05 ]
>>349
あ、いや、後段の方。

351 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 11:41:40 ]
>>348
クラスと同じように共用体もコンストラクタやデストラクタを持てる

union AB{
....
AB(A a){ this->a = a; }
AB(B b){ this->b = b; }
};

352 名前:347 mailto:sage [2009/08/11(火) 11:41:42 ]
>>348
>クラスは普通に使ってます。
じゃあとりあえず、
自分のコードのunionになっている場所をclassに単純に書き換えて
実現してみてよ。

それがすぐ答えにつながる。


353 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:06:41 ]
>>342
理屈上はそうかも知れんが、
free()しないとメモリを管理できてないような気がする。
特にdeleteしないとデストラクタがどう動くかよく分からん。

354 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:11:00 ]
つーか、共用体にする意味があるのか?
気持ち悪いと言う理由だけでは意味がなさ過ぎる。
どちらかだけ有効だと言うのであれば、boost::optionalでも使って有効性をチェックすればいいだけの気もするが。

355 名前:342 mailto:sage [2009/08/11(火) 12:12:23 ]
いや俺はfree()しないことに反対な人だから。
ただこういう意見な人も居るよっていいたかっただけだ。





356 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:12:23 ]
>>353
deleteしなければデストラクタが動くわけないじゃん。
OSは、クラスの管理までしてくれるわけじゃないよ。

357 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:13:11 ]
>>354
boost::optional
の使いどころおかしくねぇか?
valiantじゃなくて?


358 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 12:23:55 ]
>>357
元質の趣旨が判らんから勝手に推測した。valiantを使うべきならそうしてくれ。

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から始めます。






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

前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