C++相談室 part33

このエントリーをはてなブックマークに追加
862デフォルトの名無しさん:04/08/05 23:40
>>861
Cとの互換性のため
むしろC++の構造体=クラスの劣化版
じゃないの?
劣化してないよ。
structにclassの機能を付与したのは
例によって付与しないデメリットが思いつかないという
思い付きによって決められた糞仕様なんだよ。
>>865
そうか。思いつきだったのか。別にCのstructの機能そのままでも
良かったような気もしたりしてたんだよな。
デフォルトのアクセス制限が違うだけなんだもん。
ファンクタを簡単に書くためだろ
つーか、classがデフォルトprivateなのもあんま意味ないよな。
カプセル化しないバカを減らすためだろ
>>867
それだ!
interfaceもそうだけどあとからstructの性質を利用しただけだろ
872デフォルトの名無しさん:04/08/06 02:00
すいません、
空のフォルダを削除するにはどうしたらいいのでしょうか?
googleで検索してもなかなか見つからず、
やっとサンプルコードが見つかったと思ったら、ないヘッダがインクルードしてあって
結局分かりませんでした。
標準C++にはありません
ファイルシステムの操作は,環境依存。
自分の環境スレ逝け。
875872:04/08/06 02:06
>>874
環境ということは・・・
えーと・・・
BCC使ってるのでBCCスレということですね。

分かりました。
BCCスレで聞いてきます。
天然
877デフォルトの名無しさん:04/08/06 03:30
removeで消えるんじゃねーの?
BCCはしらんけど
消えるかもしれないが、消えないかもしれない。
>>878
くだらん
DOSのコマンド呼び出しちゃえば?
rdだっけ。
881デフォルトの名無しさん:04/08/06 12:31
class A
{
 int d;
 A() : d(0) {}
};
はできるけど

class B
{
 char s[16];
 B() :s(0) {}
};
はできないよね。
コンストラクタで配列を初期化したい時はどうすればいいの?
newしろ
newすると0フィルされるの?
>>881
残念ながら、できない。
C++の仕様の穴と言われております。

でも、配列なんて滅多に使わないしなぁ。
>>881
つーか暮らす定義の中に書かなけりゃいい
std::memset(s, 0, sizeof(s));
ただ0のバイナリイメージが0じゃない環境では
うまくいかない希ガス。なので漏れは for で回してる。
std::fill使えばいいやん
888886:04/08/06 12:42
Σ(゚Д゚)…!!
>>886-887
それは初期化じゃなくて代入
では std::vector ということで
char[16]にMD5とか格納したい時にわざわざ
vector作るの?
char なら std::string で。だめ?
std::stringってバイナリ格納してもいいの?
char[16]よりはvectorがいい
腹くくって素直にstd::fill()しる
>>893
いいよ。

正直char s[16]は突っ込むところじゃないと思う。
標準関数使ってる人はなに作ってるの?
898デフォルトの名無しさん:04/08/06 13:08
for( int j = 0; j < 1000; j++ ){
try{
throw j;
}
catch(int z){
}
100回目で落ちます。なぜ?
環境書けよ。
あと普通のクラスthrowした場合は?
>>881
char []の0 fillなら初期化に頼らずに、
コンストラクタ本体での代入で十分じゃないですか?
>>900
0でいいなら、なにもしなくても0じゃなかったっけ?
>>901
まともなOOPLならその通り
>>898
中括弧の数が合わないが
時々あるが、質問者の「バイナリ」の意味がわからんな。
905898:04/08/06 13:47
失礼しました。
for( int j = 0; j < 1000; j++ ){
 try{
  throw j;
  TXOwl::Raise(""); // どちらか
 }
  catch(...){
 }
}
BorlandC++5.02J
WindowsXP
です。
どちらでも101回目で落ちます。なぜ?
よろしくお願いします。
>>905
「落ちる」と言ってもいろいろあるんだけど。
具体的に。
>>905
コンパイラ最新のにしてみたら。
あとTXOwl::Raiseが悪さしてるとはないんだよね。
今年の夏もひとり。
自分のために夏休みは使うかな。

誤爆してスマソ
910898:04/08/06 14:56
>>906
ライブラリの中っぽい
0x77E33887 の pop si
でデバッガが止まります。スタックのエラーですかね?

>>907
throw 1; でも throw ""; でも同じ結果です。
コンパイラの更新ですか。ふぅ。
配列が100しか用意してないから
初期化しないといけない