■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
C++相談室 part51
501
名前:
デフォルトの名無しさん
:2006/08/03(木) 03:59:31
>>500
FAQ だなぁ。
↓の 940- 見て。
http://pc5.2ch.net/tech/kako/1052/10526/1052625846.html
(
http://pc5.2ch.net/test/read.cgi/tech/1052625846/940-
)
502
名前:
デフォルトの名無しさん
:2006/08/03(木) 06:15:31
Windows によって iTraxx.exe でブレークポイントが発生しました。
ヒープが壊れていることが原因として考えられます。iTraxx.exe または読み込まれた DLL にバグがあります。
というエラーメッセージが出て困ってるのですが、何か心当たりはありませんか?
無視して継続すると、普通に処理ができます。
503
名前:
502
:2006/08/03(木) 06:17:30
HEAP[iTraxx.exe]: HEAP: Free Heap block 41c928 modified at 41caa8 after it was freed
というのも書いてありました。
504
名前:
502
:2006/08/03(木) 06:46:19
すいません、自己解決しました。
メモリを確保していない領域に書き込んでしまっていたようです。
初歩的な問題で場を濁してすみませんでした。
505
名前:
500
:2006/08/03(木) 19:09:29
>>501
ありがとうございました
今後きちんとログを調べるようにします
506
名前:
デフォルトの名無しさん
:2006/08/03(木) 19:10:39
クラスのインスタンスをスタック上に作成することは許可しますが、
ヒープ上に作成することは禁止したい。このようなことは可能ですか?
507
名前:
デフォルトの名無しさん
:2006/08/03(木) 19:22:36
可能
508
名前:
506
:2006/08/03(木) 20:36:09
どうやってですか?
509
名前:
デフォルトの名無しさん
:2006/08/03(木) 20:49:23
D&Eからだけど、こうするとグローバル変数とローカル変数しか作れなくなるそうだ。
class No_free_store {
class Dummy { };
void* operator new(size_t, Dummy);
// ...
};
510
名前:
506
:2006/08/03(木) 21:42:51
>>509
ありがとう。試してみる。m(_ _)m
511
名前:
夜も眠れない
:2006/08/05(土) 16:57:40
std::time_t がオーバーフローしそうです。
512
名前:
デフォルトの名無しさん
:2006/08/06(日) 01:08:14
>>511
32年後か?
513
名前:
デフォルトの名無しさん
:2006/08/06(日) 10:55:14
というかsizeof(std::time_t)は、
大きくなっている環境が増えてきているぜ?
514
名前:
デフォルトの名無しさん
:2006/08/06(日) 14:14:36
冷害が発生した箇所を特定するにはどうすればよいでしょう?
JavaやC#のように、スタックトレースの出力は行えないのでしょうか。
515
名前:
514
:2006/08/06(日) 14:15:13
>>514
「例外」です。すみません...
516
名前:
デフォルトの名無しさん
:2006/08/06(日) 14:17:05
平均気温と作況指数を見る。
517
名前:
516
:2006/08/06(日) 14:17:58
言葉が正しいかぐぐってる間に訂正された orz
518
名前:
デフォルトの名無しさん
:2006/08/06(日) 14:18:06
今年のホットなテーマは冷害より雨害だと思うがなぁ。
519
名前:
デフォルトの名無しさん
:2006/08/06(日) 14:33:24
冷害は常にクールな話題だぜ
520
名前:
デフォルトの名無しさん
:2006/08/06(日) 14:55:01
>>519
誰が美味い米を食えと言った
521
名前:
デフォルトの名無しさん
:2006/08/06(日) 15:14:51
>>514
自動的には行われない。自分で例外オブジェクトに __FILE__ とか __LINE__ とか
埋めれば、それっぽいことはできる。
522
名前:
デフォルトの名無しさん
:2006/08/06(日) 15:19:04
処理系によるだろ。
523
名前:
デフォルトの名無しさん
:2006/08/06(日) 15:21:01
>>522
何の話?
524
名前:
デフォルトの名無しさん
:2006/08/06(日) 15:23:38
>>514
マップファイルを出力しておけば、エラーダイアログに表示されるアドレスから、
どこで落ちたか特定できる。
525
名前:
デフォルトの名無しさん
:2006/08/06(日) 16:17:08
>>521
例外オブジェクトのコンストラクタに毎回渡すってことか?
526
名前:
デフォルトの名無しさん
:2006/08/06(日) 16:39:47
>>525
そうだよ。
527
名前:
デフォルトの名無しさん
:2006/08/06(日) 17:12:25
>>526
カナシス
528
名前:
デフォルトの名無しさん
:2006/08/06(日) 17:31:05
>>514
#ifdef NDEBUG
#define THROW throw
#else
#define THROW fprintf(stderr, "%s (%d)\n", __FILE__, __LINE__), throw
#endif
とかして、THROW を使えばいい。
529
名前:
デフォルトの名無しさん
:2006/08/06(日) 18:14:53
このスレの 299- あたりも参照すべし。
530
名前:
524
:2006/08/06(日) 19:38:40
無視かよ・・・ orz
531
名前:
デフォルトの名無しさん
:2006/08/06(日) 19:43:18
>>530
落ちた場所じゃなくて例外がスローされた場所の話だからね。
532
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:12:48
相談です。
Win2K, MSVC++6.0
以下のプログラムを実行すると
unknown software exception(0xc00000fd) が発生して落ちてしまいます。
どこに問題があるのか分かる方お願いします。
#include <fstream>
#include <iostream>
int main(int argc, char* argv[])
{
//test.txtは存在しています。内容に関わらずエラーが出ます。
std::ifstream fin("test.txt", std::ios::in | std::ios::binary);
if(!fin){
return 0;
}
const int bufSize = 1024*1024;
unsigned char buf[bufSize];
while(!fin.eof()) {
std::cout << "r:";
int len = fin.read(reinterpret_cast<char*>(buf), bufSize).gcount();
std::cout << len << std::endl;
}
return 0;
}
533
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:17:48
>>532
スタックサイズ
534
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:18:25
>>532
デバッガでステップ実行しろよ
535
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:23:52
>>533
d。1MBは駄目でしたか。
スタックにバッファ取る場合は常識的にどれくらいまで可能可能なんでしょうか?
再帰などは無しとして100KBくらいでも大きすぎでしょうか?
536
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:36:56
知るかよ。
VC++のデフォルトは1MBだと思ったが。
537
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:37:43
>>535
C++ 処理系が満たすべき最低限の指標として、規格中に
> Size of an object [262 144].
というのがある。
移植性のためにも単一のオブジェクトサイズは
ここまでにしとくのがいいんじゃないかね?
スタックサイズという概念は規格には無いので、
実際のところは環境に合わせて考えないとだめだよ。
538
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:48:29
>>537
ありがとうございます。
最大でも200KBくらいということですね。
Linux+GCCでも使うので一般的なアプリの環境で考えていました。
539
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:50:00
ヒープに取れよ。newしろ。
540
名前:
デフォルトの名無しさん
:2006/08/06(日) 20:52:03
>>537
早速誤解しやがったな。
"Size of an object" とスタックに確保可能なサイズは関係ない。
541
名前:
デフォルトの名無しさん
:2006/08/06(日) 21:05:49
/Fオプションでスタックサイズを変更しろって。
542
名前:
デフォルトの名無しさん
:2006/08/06(日) 21:48:18
100KBを超える場合はnewしようと思います。
コンパイルオプションを変えるほどの処理では無いので。
バッファは64KBにしました。
543
名前:
デフォルトの名無しさん
:2006/08/06(日) 21:58:56
バッファ程度ならstaticにでもしてしまえばいいじゃん。
544
名前:
デフォルトの名無しさん
:2006/08/06(日) 22:01:30
>>543
「バッファ程度」という基準の意味がわからん。 static のほうが嫌だし。
545
名前:
デフォルトの名無しさん
:2006/08/06(日) 22:04:41
相手にすんなって。
546
名前:
デフォルトの名無しさん
:2006/08/06(日) 23:25:45
初めて自分の家のPCでC言語を使ってみようと思って、NET Framework SDK
をDLしてインストールしましたが、IIS(インターネントインフォメーションサービス)?が
コントロールパネルのコンポーネントと追加の削除の中からできるようにしておかないと
ダメみたいなので探しても見当たらない・・・。
これってもともとPCに入ってるものなの??
XPを使ってて他の方法も考えてますが誰かエロイ人教えてくれませんか??
お願いします><
547
名前:
デフォルトの名無しさん
:2006/08/06(日) 23:31:47
教えてやりたいが俺はエロくないので…残念だ
548
名前:
デフォルトの名無しさん
:2006/08/06(日) 23:33:30
他スレを見るまでもなくマルチと分かるこの香り
549
名前:
デフォルトの名無しさん
:2006/08/06(日) 23:35:11
君が本当に落とすべきだったのはこれ
http://www.microsoft.com/japan/msdn/vstudio/express/visualc/
550
名前:
546
:2006/08/06(日) 23:35:58
これマジですorz
マルチでもなんでもないんです!!(実はマルチの意味すら分かってない
551
名前:
549
:2006/08/06(日) 23:39:01
なんだよーマルチかよー
相手して損した
552
名前:
デフォルトの名無しさん
:2006/08/06(日) 23:39:19
フーン
553
名前:
546
:2006/08/06(日) 23:44:18
>>549
ありがとう〜今やってるとこだけど俺は違うのを落としてたのかな?
ちなみにマルチってどういう意味?
マルチ商法??
554
名前:
デフォルトの名無しさん
:2006/08/06(日) 23:46:34
>>553
複数のスレッドに同じ内容を書き込むこと。
それくらい自分で調べろよ。
555
名前:
546
:2006/08/06(日) 23:48:34
大丈夫!ここにしか書き込んでないから^^
ありがとう〜初心者なのでこれから頑張っていきます!!
556
名前:
546
:2006/08/07(月) 00:17:07
今やっと終わったけどIISって必要ないの?
その部分に関しては何も変わってないきががする・・・
557
名前:
デフォルトの名無しさん
:2006/08/07(月) 00:21:00
through
558
名前:
546
:2006/08/07(月) 00:21:48
through?
意味わかんないんだけど・・・
559
名前:
デフォルトの名無しさん
:2006/08/07(月) 00:22:10
>>556
ドキュメント読んで一通りセットアップしてから、それでも問題が出たら VC スレに逝け。
560
名前:
546
:2006/08/07(月) 00:25:03
これってウィンドウズプログラム作れないの?
561
名前:
デフォルトの名無しさん
:2006/08/07(月) 00:28:05
作れます。
562
名前:
546
:2006/08/07(月) 00:51:30
>>560
出た!教えて訓!
563
名前:
デフォルトの名無しさん
:2006/08/07(月) 01:07:05
質問です。
class parents{...};
class child:public parents{...};
以上の親クラスと、親を継承する子クラスがあったとして
base *obj = new child;
delete obj;
このようにdeleteにポインタを渡す時点で型が変わってる時、
正常なdelete処理は行われますか?
なんとなくparents型のサイズしか開放されない気がするのですが・・・。
教えて欲しいです。
564
名前:
デフォルトの名無しさん
:2006/08/07(月) 01:08:58
555までで終わっておけば良かったのに
なんか損した気分
>>562
騙りレス番消し忘れてるぞ
565
名前:
デフォルトの名無しさん
:2006/08/07(月) 01:10:25
>>563
問題ない。deleteは型の認識はせずにサイズだけ記憶している。
566
名前:
デフォルトの名無しさん
:2006/08/07(月) 01:10:59
childのデストラクタにprintfでも仕込んで確かめりゃいいじゃん
567
名前:
デフォルトの名無しさん
:2006/08/07(月) 01:19:47
カソーデストラーデ
568
名前:
563
:2006/08/07(月) 01:27:42
>>565
さん
ありがとうございます。メモリ自体は正常に破棄されるんですね。
>>566
さん
おっしゃるとおりです・・・ただデストラクタは呼ばれなかったけど
C言語のmallocとfreeなら正常に破棄してくれそうなので。
>>567
さん
仮想デストラクタの機能は今知りました!
まさにこういうのを求めてたので・・・ありがとうございました!
569
名前:
デフォルトの名無しさん
:2006/08/07(月) 01:53:06
>>564
556までの間違いだろバカ!
なんか損した気分
570
名前:
デフォルトの名無しさん
:2006/08/07(月) 02:45:34
バカは君のことだよ
571
名前:
デフォルトの名無しさん
:2006/08/07(月) 03:07:16
バカばっかりだな
572
名前:
デフォルトの名無しさん
:2006/08/07(月) 04:08:50
メモ帳で次の文字を教科書どおりに入力し、デスクトップに保存しました
<HTML>
<HEAD>
<TITLE>Hello JavaScript</TITLE>
</HEAD>
<BODY>
<SCRIPT language="JavaScript">
document.write("Hello! JavaScript!!");
</SCRIPT>
</BODY>
</HTML>
IEで開こうとしてもなぜかHP調の画面にならず、そのまま文字が表示されるだけでした。これはなぜでしょうか?
すみませんマルチになってしまい申し訳ありませんが
573
名前:
デフォルトの名無しさん
:2006/08/07(月) 04:10:05
激しくスレ違い
574
名前:
デフォルトの名無しさん
:2006/08/07(月) 06:18:26
アニメから映画、ゲーム実況まで何でもある
みんなでvip実況スレを盛り上げよう
ニュー速VIP
ttp://ex16.2ch.net/news4vip/
FF4→5→6 リレー実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154895492/
ゲームセンターCX
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154888213/
エロゲ実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154839702/
おまいらが指定したゲーム実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154896516/
RPG実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154857556/
女神転生とかを実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154776872/
実況!アニメ流すぜ!3本目
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154877307/
【東方】弾幕実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154852500/
ファミコンジャンプ実況スレ
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154878214/
エロゲ実況すればいいじゃねーか
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154885750/
大神実況してみる その4
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154880537/
ICO実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154896258/
好きなゲームを実況するスレ
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154861584/
ToHeart2系実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154774247/
かまいたちの夜x3を実況してみる
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154863755/
映画実況するのかも
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154895107/
FF4→5→6→7 リレー実況
ttp://ex16.2ch.net/test/read.cgi/news4vip/1154898127/
575
名前:
デフォルトの名無しさん
:2006/08/07(月) 13:16:20
int i;
(i = 3) && printf("%d",i);
これを一文で書きたくて
( int i = 3 ) && printf("%d",i);
としたらiが定義されていないとエラーになります
一文では書けないのでしょうか?
576
名前:
デフォルトの名無しさん
:2006/08/07(月) 13:59:52
無理。
577
名前:
デフォルトの名無しさん
:2006/08/07(月) 14:47:34
変数の宣言は式ではないから、式の中には書けない。
578
名前:
デフォルトの名無しさん
:2006/08/07(月) 15:01:11
gcc拡張に依存していいならブロック式が使える。
けどこれ結局、式文にして式の値使ってないから、
普通のブロックでも代りないのでは?
{ int i = 3; i && printf("%d",i); }
579
名前:
デフォルトの名無しさん
:2006/08/07(月) 15:06:54
>>578
それどこらへんがgcc拡張?
580
名前:
デフォルトの名無しさん
:2006/08/07(月) 15:21:16
gcc拡張の例は必要なさそうなので書かなかった。
↓使いたい人はこちらをご覧あれ
http://gcc.gnu.org/onlinedocs/gcc-4.1.1/gcc/Statement-Exprs.html#Statement-Exprs
581
名前:
デフォルトの名無しさん
:2006/08/07(月) 16:52:13
Perl だとできるんだよね。
my ($n) = /^(hoge)/ or die()
まぁ、そもそも宣言しなくて変数使えるんだけど。
582
名前:
デフォルトの名無しさん
:2006/08/07(月) 16:58:21
それがどうした。
583
名前:
デフォルトの名無しさん
:2006/08/07(月) 18:06:12
アプリ上からchmファイルを呼ぶためには
どのような記述をすればよいのでしょうか。
VC6.0です。
584
名前:
呼んでみた
:2006/08/07(月) 18:24:58
おーい、chmファイルやーい。
585
名前:
デフォルトの名無しさん
:2006/08/07(月) 18:30:25
Perl だとできるんだよね。
ohi $file.chm or die()
まぁ、そもそも呼ばなくてもchmファイルやってくるんだけど。
586
名前:
デフォルトの名無しさん
:2006/08/07(月) 18:40:50
だからそれがどうした。スレ違いもいい所だ。
587
名前:
デフォルトの名無しさん
:2006/08/07(月) 19:04:19
>>586
まぁまぁ。せっかく夏休みにPerl覚えたばっかりだから
ひけらかしたいんだろう。
588
名前:
デフォルトの名無しさん
:2006/08/07(月) 19:19:21
>>585
そんなわけあるかw
だが、perlだとあっても不思議ではない気がするのが怖い。
589
名前:
デフォルトの名無しさん
:2006/08/07(月) 19:36:23
>>575
int i = (((i = 3) && printf("%d", i)), i);
これで出来ないことはないが、こんなコードは採用するな。
590
名前:
デフォルトの名無しさん
:2006/08/07(月) 19:44:59
>>589
それじゃ意味がちがくない?
というか、元々の文の意味も、何がやりたいのかよー分からんのだがな・・・。
i = 3 は常に真だから、
int i = 3;
printf("%d", i);
でいいじゃん。
591
名前:
デフォルトの名無しさん
:2006/08/07(月) 19:51:39
>>589
>それじゃ意味がちがくない?
どのへんが?
>i = 3 は常に真だから、
わざわざ判定してるぐらいだからサンプルとして"3"を代入してるだけで
変わる可能性があるんじゃないのか?
592
名前:
デフォルトの名無しさん
:2006/08/07(月) 20:24:55
プログラム初心者ですが、質問です。
例えば、プログラムA、プログラムBという、
VC++6.0できちんと動作する別々のプログラムがあったとして、
プログラムA上でプログラムBを呼び出し、(コマンドボタンなどで)
別窓で動かすにはどうしたら良いでしょうか。
593
名前:
デフォルトの名無しさん
:2006/08/07(月) 20:37:19
無理
594
名前:
デフォルトの名無しさん
:2006/08/07(月) 20:39:24
そもそもC++の規格にコマンドボタンというものは(ry
595
名前:
デフォルトの名無しさん
:2006/08/07(月) 20:41:53
VC++6.0ということはWindows環境だと思うが、
Windowsの仕様にもコマンドボタンというものは(ry
596
名前:
デフォルトの名無しさん
:2006/08/07(月) 21:57:08
>>590
想像力が欠如してるな
597
名前:
デフォルトの名無しさん
:2006/08/07(月) 22:42:10
VC8 on WindowsXPです。(環境依存の質問は良いでしょうか?)
std::bad_alloc例外を投げてもワトソンがログ吐いてくれないのですが、
後でクラッシュした箇所を知ろうとしたときどうすればいいでしょうか。
クラッシュした直後であればクラッシュ報告ダイアログ上で情報が見られるようですが、
この情報はどこかに保存されていたりするのでしょうか…
598
名前:
デフォルトの名無しさん
:2006/08/07(月) 22:50:52
>>591
>>それじゃ意味がちがくない?
>どのへんが?
i の値が保存されない
599
名前:
デフォルトの名無しさん
:2006/08/07(月) 22:51:30
と思ったら、, i が最後に付いてたのね。
問題ないわ。スマソ。
600
名前:
デフォルトの名無しさん
:2006/08/07(月) 22:54:21
int i = (((i = 3) && printf("%d", i)), i);
を実行すると
iの値は3
601
名前:
デフォルトの名無しさん
:2006/08/07(月) 22:55:08
自己解決してやがるOTL
602
名前:
デフォルトの名無しさん
:2006/08/07(月) 22:58:43
C++スレなんだからこれでいいじゃん
if(int i = 3) printf("%d",i);
603
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:01:40
>>602
i のスコープがどーなるか知ってて言ってんのか?
604
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:03:55
VC6だったらどうなるんだろうな?w
605
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:05:14
>>603
言ってますよ。
606
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:13:18
>>601
すまんかった。
printf の ,i もあるから、それと勘違いしてたのね。
607
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:18:16
>>603
i のスコープはprintf()まで有効なんじゃねーの?
(if 文抜けたら無効)
608
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:20:01
>>603
おっと、だからイクナイのか、スマソ
609
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:34:51
>>600
どうやらそうとも言い切れないようだ。
http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#504
610
名前:
デフォルトの名無しさん
:2006/08/07(月) 23:52:19
>>609
英語ヨメネ
コンパイラ依存?
611
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:16:00
>>610
禿とその仲間たちが int i = i; なんてエラーにしたほうがいいんだろうな、とか言ってる。
612
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:27:17
>>611
禿とその仲間たち→禿と愉快な仲間たち
613
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:28:41
>>611
禿げの言うことならほっとくか
614
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:44:22
>>611
そのくせ void *p = &p; はおk、とか言ってるあたりがなんだかなぁもうって感じ。
確かにそうしたほうが非常に C++ っぽいとは思うが。
615
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:49:20
>>614
はぁ?それはOKに決まってるだろ。馬鹿ですぅかぁ?
616
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:51:50
int i = i;
はiにどんな値が入るか完全に不定だが、
void *p = &p;
はpにpへのポインタが入る。
なんだかなぁもうって言ってる人がなんだかなぁって感じ。
何にも分かってないんだね。
617
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:53:04
アホにつくレスだけは早いのなw
618
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:55:31
>>616
そんなことはわかった上で言ってるんだが。
619
名前:
デフォルトの名無しさん
:2006/08/08(火) 00:55:51
脊髄のほうが早い。人間だもの。
620
名前:
デフォルトの名無しさん
:2006/08/08(火) 01:07:45
>>618
ハイハイw 俺もお前が馬鹿と分かった上で言ってるよw
621
名前:
デフォルトの名無しさん
:2006/08/08(火) 01:35:33
>>616
pへのポインタっつうことはポインタへのポインタってことなんすよね?
何か左辺と右辺で型が違うような気がする
分からんようになってきてもうた
622
名前:
デフォルトの名無しさん
:2006/08/08(火) 01:43:51
>>621
void型のポインタだから合法
623
名前:
デフォルトの名無しさん
:2006/08/08(火) 01:45:06
void * だから何でも入るだろ。
まあ、void *p = &p; なんてすることに
どれだけの意味があるのか知らんが。
624
名前:
デフォルトの名無しさん
:2006/08/08(火) 08:50:00
#include <ctime> してるんですが、
time_t や time() がグローバルな名前空間に見えています。
std::time_t や std::time() じゃないと気持ち悪いのですが、
何とかなりませんでしょうか?
ちなみに開発環境は Visual Studio 2005 Professional です。
625
名前:
デフォルトの名無しさん
:2006/08/08(火) 10:36:47
std::string を関数の戻り値として使うときなどは、
中で激しくコピーが起こりまくっているんでしょうか?
リファレンスカウントにするとか、copy-on-write に
するとかは実装者依存なんですか?
626
名前:
デフォルトの名無しさん
:2006/08/08(火) 10:48:57
>>625
RVOが働けば最低限のコピーでう済むだろうなあ。
リファレンスカウントとかは実装依存。
627
名前:
デフォルトの名無しさん
:2006/08/08(火) 10:54:38
ふむぅ、RVOが働くかどうかも処理系依存だしなぁ。
std::wstring o(L"おなにぃ")
//処理
return o;
とかはやっぱやるべきじゃないんだろうか。
戻り値じゃなく参照な引数で返すべきなんだろうか。
628
名前:
デフォルトの名無しさん
:2006/08/08(火) 10:55:36
ほかの参照ベースのオブジェクト処理言語系みたく
扱おうと思ったら、なんでもかんでも boost::shared_ptr ?
629
名前:
デフォルトの名無しさん
:2006/08/08(火) 11:12:22
>>624
http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-active.html#456
630
名前:
デフォルトの名無しさん
:2006/08/08(火) 11:18:28
>>628
Boehm GCとかもある。shared_ptrなんかだと循環参照とか気にする必要がある。
631
名前:
デフォルトの名無しさん
:2006/08/08(火) 12:43:25
>>625
参照返すんじゃまずいのか?
632
名前:
デフォルトの名無しさん
:2006/08/08(火) 12:45:20
>>631
寿命の問題が発生するのが嫌なんだろう。
633
名前:
デフォルトの名無しさん
:2006/08/08(火) 12:56:49
嫌つーか、自動変数の参照返したらまずいだろ。
634
名前:
デフォルトの名無しさん
:2006/08/08(火) 13:03:16
RVOって例えば以下で
コピーコンストラクタが呼ばれなければ
効いているって考えていいんでしょうか?
#include <iostream>
using namespace std;
struct A {
A () {}
A (const A &p) {cout << "hoge" << endl;}
};
A func () {return A ();}
int main () {
A a (func ());
return 0;
}
635
名前:
デフォルトの名無しさん
:2006/08/08(火) 13:13:15
>>634
それだと func() の戻り値と a の生成で2回コピーコンストラクタが使われる可能性がある。
636
名前:
デフォルトの名無しさん
:2006/08/08(火) 13:21:25
>>635
なるほど
hogeが表示される回数は0ないし1ないし2の可能性があって
何回呼ばれるかは規格では定まってないと.
勉強になりました.
637
名前:
592
:2006/08/08(火) 14:41:47
お答えくださったのに、何も言わずにすみませんでした。
お答えくださった方々、ありがとうございました。
スレが違っていたみたいです、申し訳ありません。
失礼しました。
638
名前:
デフォルトの名無しさん
:2006/08/08(火) 15:36:41
>>633
>>625
に自動変数なんて制約はないよ。
639
名前:
デフォルトの名無しさん
:2006/08/08(火) 18:06:17
クラスを定義すると無条件で(デフォルトで)
1)デフォルトコンストラクタ
2)コピーコンストラクタ
3)代入演算子
が生成されますか?
640
名前:
639
:2006/08/08(火) 18:13:03
何かコンストラクタを定義するとデフォルトコンストラクタは
自動定義されなくなりますが、コピーコンストラクタと代入演算子は
あいかわらず自動で定義されたものがそのまま存在するのですね。
勝手に使われているのが不安な場合は両者を protected などに
しておくというのが常套手段なんですか?
641
名前:
デフォルトの名無しさん
:2006/08/08(火) 18:41:14
そんなあなるにboost::noncopyable
642
名前:
デフォルトの名無しさん
:2006/08/08(火) 19:04:37
もう、boost禁止で。
643
名前:
あなる
:2006/08/08(火) 20:22:37
>>641
ありがとう
>>642
それじゃプログラム組めないよ・・・もはや
644
名前:
デフォルトの名無しさん
:2006/08/08(火) 21:24:22
>>640
代入演算子とコピーコンストラクタを、privateで宣言するのが常套手段。定義の必要はない。
何が何でもboost使いたければ、お好きなように。
645
名前:
デフォルトの名無しさん
:2006/08/08(火) 21:34:39
ビットマスクって1と2が設定されているのと3が設定されているのはどうやって見分けるの?
646
名前:
デフォルトの名無しさん
:2006/08/08(火) 21:37:17
>>645
日本語でおk
647
名前:
デフォルトの名無しさん
:2006/08/08(火) 22:00:05
>>645
どうやって見分けるかは完璧に君の自由だ羨ましいぜこのやろう
648
名前:
デフォルトの名無しさん
:2006/08/08(火) 22:55:34
フラグの定数に3なんて使わないだろ
649
名前:
デフォルトの名無しさん
:2006/08/08(火) 23:10:17
ブラク?部落?
650
名前:
デフォルトの名無しさん
:2006/08/08(火) 23:40:22
1
2
4
8
16
32
64
128
256
512
651
名前:
デフォルトの名無しさん
:2006/08/08(火) 23:43:50
1 & 2 のエイリアスとして3が定義されてるとか
652
名前:
デフォルトの名無しさん
:2006/08/08(火) 23:53:25
1 | 2 じゃね?
653
名前:
デフォルトの名無しさん
:2006/08/09(水) 00:02:15
STLのmapに抽象クラスって入りますか?
実際には、抽象クラスを継承したものを入れたいんですが。
654
名前:
デフォルトの名無しさん
:2006/08/09(水) 00:05:54
>>653
抽象クラスのポインタを入れればいい。
655
名前:
デフォルトの名無しさん
:2006/08/09(水) 00:08:12
>>654
なるほど。盲点でした。
ありがとうございました。
656
名前:
デフォルトの名無しさん
:2006/08/09(水) 00:35:09
>>640
君、Effective C++読まないと!
657
名前:
デフォルトの名無しさん
:2006/08/09(水) 10:00:47
ここって初心者スレだったの?
658
名前:
デフォルトの名無しさん
:2006/08/09(水) 10:08:08
高度な話題になると荒れるから初心者でいんじゃね・・・。
659
名前:
デフォルトの名無しさん
:2006/08/09(水) 12:31:15
>>638
遅レスでどうでもいいツッコミだが
「参照返す」って言われたら中で自動変数作って参照の戻り値を返す以外に
なんかあるか?
660
名前:
デフォルトの名無しさん
:2006/08/09(水) 12:44:07
ある
661
名前:
デフォルトの名無しさん
:2006/08/09(水) 12:45:06
T& foo() {
return *(new T);
}
662
名前:
デフォルトの名無しさん
:2006/08/09(水) 12:54:55
勘弁してくれ
663
名前:
デフォルトの名無しさん
:2006/08/09(水) 12:57:34
>>661
かっこいい!
664
名前:
デフォルトの名無しさん
:2006/08/09(水) 13:13:43
std::string& foo() {
std::string *p = new std::string;
ああだこうだ;
return *p;
}
普通にやる
665
名前:
デフォルトの名無しさん
:2006/08/09(水) 13:24:23
その std::string のインスタンス、
ちゃんと責任もって delete してやれよ・・・
666
名前:
デフォルトの名無しさん
:2006/08/09(水) 13:52:14
Effective C++によれば、
>>665
の意味でわけわからなくなるから、やらないこと推奨の方法。
667
名前:
デフォルトの名無しさん
:2006/08/09(水) 13:57:19
string &a=foo();
のとき、
delete &a;
ってなるのか?
すごく気持ち悪いけど、よく使うやり方なのかな。
俺がもしどうしてもこういう場面になったらshared_ptr使うとおもうけど。
668
名前:
デフォルトの名無しさん
:2006/08/09(水) 14:10:10
それ以前にあらかじめ引数でfooにstringくれてやれよ。
669
名前:
デフォルトの名無しさん
:2006/08/09(水) 14:43:52
>>668
参照を返すときの話をしてるんだけど
670
名前:
デフォルトの名無しさん
:2006/08/09(水) 16:19:34
そんなあなるにmove_ptr
671
名前:
デフォルトの名無しさん
:2006/08/09(水) 16:24:20
コンストラクタに与えるタグで振る舞いを変えたくて以下のようにしてみました。
ただ、継承しつつ内部に包含する(?)というのがある程度一般的になされることなのか
自信がありません。コメント頂けるとありがたいです。
struct base { virtual void func(void) = 0; }; // インターフェイス
struct derived1 : public base { void func(void) { cout << "d1" << endl;} };
struct derived2 : public base { void func(void) { cout << "d2" << endl;} };
struct t1 {}; // 切り替え用の
struct t2 {}; // タグ
struct X : public base {
X(t1) : m_impl(new derived1) {} // t1指定でderived1の動作
X(t2) : m_impl(new derived2) {} // t2指定でderived2の動作
~X() { delete m_impl; }
void func(void) { m_impl->func(); }
base* m_impl;
};
int main(void) {
t2 t; // t2を
X x(t); // 指定したので
x.func(); // d2と表示
return 0;
}
672
名前:
デフォルトの名無しさん
:2006/08/09(水) 16:32:25
べつにふつーとおもた
673
名前:
671
:2006/08/09(水) 17:22:07
>>672
ふつーですか。
「インターフェイスの継承+包含による実装の委譲」と理解しました。
継承と委譲の関係を混同していたので気持ち悪く感じてしまったようです。
どうも〜。
674
名前:
デフォルトの名無しさん
:2006/08/09(水) 17:55:51
>>673
デザインパターンのストラテジーパターンなどの説明を読むとすっきりするかもね。
675
名前:
デフォルトの名無しさん
:2006/08/09(水) 18:15:39
tyr4w@hort5rs,
9yq@t@0w@deleteduese:joyw@rt?
676
名前:
デフォルトの名無しさん
:2006/08/09(水) 18:17:53
structには、誰も突っ込まんのか
677
名前:
デフォルトの名無しさん
:2006/08/09(水) 18:46:38
>>676
?
678
名前:
デフォルトの名無しさん
:2006/08/09(水) 18:48:18
>>677
??
679
名前:
デフォルトの名無しさん
:2006/08/09(水) 18:58:46
>>676
structだと何がまずいの?
680
名前:
デフォルトの名無しさん
:2006/08/09(水) 19:02:34
>>679
別にまずくないんじゃないの
681
名前:
デフォルトの名無しさん
:2006/08/09(水) 19:06:02
>>680
なんでまずくないんじゃないの?
682
名前:
デフォルトの名無しさん
:2006/08/09(水) 19:08:52
671でstructを使ったのはpublic:をけちって行数削減するためだろうと思ったが違うのか?
683
名前:
デフォルトの名無しさん
:2006/08/09(水) 19:19:26
>>682
さあ?普段からstruct使う人かもよ?
684
名前:
671
:2006/08/09(水) 19:30:58
変なところを指摘されてる…。
structもclassも同じだと思ってましたがまずいですか?
structとした理由に
>>682
以上の意味はありませんが。
685
名前:
デフォルトの名無しさん
:2006/08/09(水) 19:39:30
イッヨ 2chクオリティ
686
名前:
デフォルトの名無しさん
:2006/08/09(水) 19:40:27
>>684
>>671
の内容だったら、classにしてもたかだか1行しか変わらないと思うけど。
687
名前:
デフォルトの名無しさん
:2006/08/09(水) 19:57:04
>>686
本質とは関係ないものを排除して、見やすくしてるんだよ。
688
名前:
デフォルトの名無しさん
:2006/08/09(水) 22:47:36
その結果、本質とは関係ない疑問もわいたりするがな
689
名前:
デフォルトの名無しさん
:2006/08/10(木) 00:11:46
無知な奴にしかわかないよ
690
名前:
デフォルトの名無しさん
:2006/08/10(木) 00:20:33
>>671
コンストラクタの部分特殊化ができれば、
インスタンス作らないでもできるのにね。
691
名前:
デフォルトの名無しさん
:2006/08/10(木) 00:23:52
>>676
同じような用途のiterator_categoryも、
ほとんどの場合struct使って書いてあるよ。
規格書からしてそうだから。
24.2 Header <iterator> synoposis
692
名前:
デフォルトの名無しさん
:2006/08/10(木) 00:24:52
出た、規格書厨
693
名前:
デフォルトの名無しさん
:2006/08/10(木) 00:26:18
>>691
関係ない。
694
名前:
デフォルトの名無しさん
:2006/08/10(木) 01:11:19
structかclassか、typenameかclassかに突っ込む奴は素人
695
名前:
デフォルトの名無しさん
:2006/08/10(木) 03:27:40
>>694
それは視点がずれてるとオモ。
696
名前:
デフォルトの名無しさん
:2006/08/10(木) 14:55:49
指定したフォルダ(ディレクトリ)以下のファイル名を取得したいのですが、
自分なりに調べたところ、VisualC++に依存したものしか見つかりませんでした。
出来ればWindowsでもUNIXでも使えるコードを書きたいのでVisualC++に依存した
物は作りたくありません。
STLやboostなどの(準)標準的なライブラリを使ってこういう事は実現出来ますか?
697
名前:
デフォルトの名無しさん
:2006/08/10(木) 14:57:28
boost::filesystemでぐぐれ
698
名前:
デフォルトの名無しさん
:2006/08/10(木) 14:59:17
boost馬鹿は新でいいよ。
699
名前:
デフォルトの名無しさん
:2006/08/10(木) 15:18:34
new boost::馬鹿;
700
名前:
デフォルトの名無しさん
:2006/08/10(木) 15:21:54
>>696
マジレスすると、ファイルシステムはOSによって異なるから、ディレクトリ操作は異なるAPIを使わざるを得ない。
それがいやなら、処理系依存部分をラップしてくれるライブラリを探してきて使う。
701
名前:
デフォルトの名無しさん
:2006/08/10(木) 15:22:27
boost::馬鹿::Create信者("
http://www.google.co.jp/
");
702
名前:
デフォルトの名無しさん
:2006/08/10(木) 15:30:44
>>697
,
>>700
ありがとうございました。他にライブラリ探すのも面倒なんで、おとなしくboost使ってみます。
ところで、なぜboostはこんなに嫌われてるんですか?(
>>698
,
>>699
,
>>701
)
703
名前:
デフォルトの名無しさん
:2006/08/10(木) 15:59:28
boost理解できなくて不貞腐れてるんだろ。
704
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:04:33
そうだね、boostは難しいもんね
705
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:07:59
>>702
どうやらboostが大嫌いな人が1人このスレに粘着してるみたい
無視していいよ
706
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:15:07
boost使わないまっとうなやり方を勧めないで、いきなりboost勧めるから嫌われる
707
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:15:14
使うだけなら簡単で便利だけど
理解しようとした途端に投げたくなるよね
708
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:22:19
こうやってboost無しではディレクトリエントリを読むこともできない
糞プログラマが誕生したのであった。
709
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:26:36
めでたしめでたし
710
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:50:46
>>706
まっとうなやり方って、autoconf使って場合わけとか?
711
名前:
デフォルトの名無しさん
:2006/08/10(木) 16:52:09
>WindowsでもUNIXでも使えるコード
これをするには、boostに限らずとも、
なんらかのクロスプラットフォームなラッパを使うしかないのだがな。
//! それとも、WindowsとUNIX両方のやり方を覚えてみる?
712
名前:
デフォルトの名無しさん
:2006/08/10(木) 17:10:21
boost馬鹿馬鹿には何を言っても無駄。
ちまちま糞ラッパー書かせとけばいいんだよ。
713
名前:
デフォルトの名無しさん
:2006/08/10(木) 17:37:15
boostって良いライブラリと思うけどね
ところでどこが嫌いなの?
714
名前:
デフォルトの名無しさん
:2006/08/10(木) 19:05:45
>>711
普通の人は、WindowsとUnixの両方のやり方を覚えるけど、それが何か?
715
名前:
デフォルトの名無しさん
:2006/08/10(木) 19:30:15
とりあえずここは環境依存の話をしてよいスレではないはずだから、
WindowsとかUnix固有のやり方を答えるのは気が引ける。
逆に言えばそういう環境依存の答えを求めるなら、初心者歓迎のC/C++室で聞いてほしい。
716
名前:
デフォルトの名無しさん
:2006/08/10(木) 19:32:59
ライブラリ依存の答えはOKなんだ。
717
名前:
デフォルトの名無しさん
:2006/08/10(木) 19:38:29
Turbo C++復活だそうですね。
718
名前:
デフォルトの名無しさん
:2006/08/10(木) 19:44:36
仕事でboostを使えない環境でやらなければならない可能性がある奴を除けば、
boostでいいだろ。
ただまぁ、Win32APIやUnixのシステムコールの使い方くらいは知っといても損はない。
719
名前:
デフォルトの名無しさん
:2006/08/10(木) 19:50:45
>>713
仕事で使って好いときとイカンときがあること。
楽だから禁止のプロジェクトだと泣ける
720
名前:
デフォルトの名無しさん
:2006/08/10(木) 20:14:23
>>719
それじゃboostのことは大好きなんじゃない?
嫌うべきは禁止するプロジェクトだよ
721
名前:
デフォルトの名無しさん
:2006/08/10(木) 20:20:22
boost禁止されてる理由を言っていい範囲で教えてくれたらうれしい。
722
名前:
デフォルトの名無しさん
:2006/08/10(木) 20:50:03
>>721
ソース納品の時の顧客の要望 orz
チームのレベル全体を見た時の上司の決定 orz
それだけに使えるときのありがたさときたら。
723
名前:
デフォルトの名無しさん
:2006/08/10(木) 21:00:44
>>714
が責任を持って
>>696
にboostを使わない方法を教えてくれるそうです
724
名前:
デフォルトの名無しさん
:2006/08/10(木) 21:16:44
>>721
保障されていない外部ライブラリの使用を禁止される場合なんてざらだよ。
多分、反論したいと思うだろうけど、そういう場合が多いのが現実。
725
名前:
デフォルトの名無しさん
:2006/08/11(金) 00:50:29
どうしてもそのまんまのソースでlコンパイル通したいなら
boostだろうけど、普通はラッパ書くよなぁ。
726
名前:
デフォルトの名無しさん
:2006/08/11(金) 00:55:56
「普通は」
特に根拠は示せないけど、自分の意見を通したい馬鹿が使う言葉
類似語 「一般的には」「常識では」「みんなもってるもん!」
727
名前:
デフォルトの名無しさん
:2006/08/11(金) 00:58:44
「馬鹿」
社会不適合奢が好んで使う言葉。
728
名前:
デフォルトの名無しさん
:2006/08/11(金) 01:00:24
>>727
「馬鹿」
自分が馬鹿な奴が使う言葉。賢い奴は他人に馬鹿と言わない。
729
名前:
デフォルトの名無しさん
:2006/08/11(金) 01:04:52
>728
はまず日本語をしっかり勉強しよう!
730
名前:
デフォルトの名無しさん
:2006/08/11(金) 01:08:14
>>729
お、図星だったみたいだな。
731
名前:
デフォルトの名無しさん
:2006/08/11(金) 01:08:19
「社会不適合奢」
真の社会不適合奢が好んで使う言葉
732
名前:
デフォルトの名無しさん
:2006/08/11(金) 01:12:24
>>730
本当に馬鹿だなぁお前。
728の何が図星当ててるレスだっていうのやら。
さっさと日本語勉強してこい。
733
名前:
デフォルトの名無しさん
:2006/08/11(金) 01:33:08
残念。このレスを見た人は即死。
734
名前:
デフォルトの名無しさん
:2006/08/11(金) 01:53:42
>>732
余程くやしいようですね( ´,_ゝ`)
735
名前:
デフォルトの名無しさん
:2006/08/11(金) 02:06:09
そうだねw
736
名前:
デフォルトの名無しさん
:2006/08/11(金) 03:50:25
お前ら「ラッパ」の使い方間違ってるぞ
737
名前:
デフォルトの名無しさん
:2006/08/11(金) 04:48:15
露西亜を征服する意をこめて名付けられたんだそうな
738
名前:
デフォルトの名無しさん
:2006/08/11(金) 04:48:17
組み込みとかの話を言い出すときりがないので
それは置いといて、普段は仕事でも boost 使っているけど、
実行時型情報が使えない事情のあるプロジェクトで
boost 禁止ってのがあった。
boots の中でも使ってもいいライブラリとそうでないモノを
分離すれば良かったんだろうけど、とりあえず面倒なので
boost 禁止、と。
739
名前:
デフォルトの名無しさん
:2006/08/11(金) 10:47:45
仕事ではよくあることだな、何の制約もないプロジェクトの方が珍しい
STLでさえ禁止だったり、C++なのに一時変数は関数の先頭に必ず宣言をまとめろ、みたいな
規約(というか慣習)があるプロジェクトも多い品
740
名前:
デフォルトの名無しさん
:2006/08/11(金) 10:51:48
>C++なのに一時変数は関数の先頭に必ず宣言をまとめろ
これは普通だろ。
741
名前:
デフォルトの名無しさん
:2006/08/11(金) 10:54:52
朝から釣りはいいよ暑苦しい
742
名前:
デフォルトの名無しさん
:2006/08/11(金) 11:22:55
for_eachにテンプレート関数を渡したいのですがどうやればいいでしょうか。
以下のコードだと実体が無いのか未解決の外部シンボルを参照したとリンカに怒られました。
template <typename T>
void NotOp(T& c) { c = ~c; }
std::for_each(buf, bufend, NotOp<unsigned int>);
743
名前:
デフォルトの名無しさん
:2006/08/11(金) 11:46:51
>>742
VC6?
744
名前:
デフォルトの名無しさん
:2006/08/11(金) 12:00:03
>>743
VC7.0(.NET 2002)です。
745
名前:
デフォルトの名無しさん
:2006/08/11(金) 12:03:40
>>744
じゃ、たぶんバグだな。明示的インスタンス化を置いとけば一応動くはず。
こうだっけ?
template void NotOp(unsigned int&);
まぁバージョンアップをお勧めする。
746
名前:
デフォルトの名無しさん
:2006/08/11(金) 12:09:32
いや、普通に通るけど?
747
名前:
デフォルトの名無しさん
:2006/08/11(金) 12:11:42
>>746
バグって無いコンパイラなら普通に通るよ。
それとも VC7.0 でテストしてるってこと?
748
名前:
デフォルトの名無しさん
:2006/08/11(金) 12:13:33
そういうこと。もっともbufとbufendの定義が書いてないから絶対とはいえんけど。
749
名前:
デフォルトの名無しさん
:2006/08/11(金) 12:15:38
>>742
なんかあやしいから、コンパイルできて問題が再現する最小のコードと
エラーメッセージのコピペを貼ってほしい。
750
名前:
742
:2006/08/11(金) 12:17:45
今新しいプロジェクトを作ってみます。
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.