■過去ログ置き場に戻る■
1-
前250
次250
最新50
[memo]
"9999999999_00.html#R20"
という感じで、URLの最後に "#R
レスNo
" を追加すると幸せになれます。
C++相談室 part33
751
名前:
デフォルトの名無しさん
:04/08/04 20:00
>>747
>deleteもいらないし。
構築成功した場合に使うdeleteは、使えないという特殊な前提ですね・・・。
752
名前:
デフォルトの名無しさん
:04/08/04 20:02
?使えないって?
構築されたら使えばよいだけの話では…
753
名前:
デフォルトの名無しさん
:04/08/04 20:03
>>743
Initで例外を投げても同じ事
754
名前:
743
:04/08/04 20:05
Init も使いますよ。初期化処理を派生クラスで
カスタマイズしたいときなど。コンストラクタでは
仮想関数呼び出せないので。
755
名前:
デフォルトの名無しさん
:04/08/04 20:06
>>752
obj* p=new obj();
p->init();
delete obj;
を
obj* p;
try { p-new obj(); } catch(const exception&) {}
delete obj;
とかやろうとしてるんだろう
756
名前:
743
:04/08/04 20:07
× 仮想関数呼び出せないので
○ 派生クラスの仮想関数を呼び出せないので
757
名前:
デフォルトの名無しさん
:04/08/04 20:07
delete p;だな
758
名前:
743
:04/08/04 20:08
>>755
その場合は
Obj* p = NULL;
としておくだけでいいのでは?
759
名前:
デフォルトの名無しさん
:04/08/04 20:12
つーかスマートポインタ使えよ
760
名前:
デフォルトの名無しさん
:04/08/04 20:13
deleteなんて持ち出したアホがその台詞言うなよ
761
名前:
743
:04/08/04 20:14
まあアホでも何でもいいですけど。
言うほど面倒くさくもないんじゃないですかね。
762
名前:
デフォルトの名無しさん
:04/08/04 20:21
いつまでつまらん例外の話題でひっぱるんだろう…
763
名前:
デフォルトの名無しさん
:04/08/04 20:22
もっとましなネタが出るまで
764
名前:
デフォルトの名無しさん
:04/08/04 20:33
auto_ptrって役に立つのですか?
765
名前:
デフォルトの名無しさん
:04/08/04 20:35
わざわざscoped_ptr使うくらいならauto_ptrで済ませりゃ良い
766
名前:
デフォルトの名無しさん
:04/08/04 20:43
>>563
の発言は過激だが、ある意味当たってる希ガス。
767
名前:
デフォルトの名無しさん
:04/08/04 20:51
そして、具体的なことは何も言わないのもいつもどおり
768
名前:
デフォルトの名無しさん
:04/08/04 21:04
>>767
具体的も何も、他人の作ったクラスを使ってみりゃいい。
その他人の作った仕様の奴隷になった気分を味わえる。
具体例をクレクレ言うのは実戦経験が浅いだけかと。
769
名前:
デフォルトの名無しさん
:04/08/04 21:05
↓
770
名前:
デフォルトの名無しさん
:04/08/04 21:07
>>768
あのー・・・
もしかして「俺ライブラリ」みたいなの作ったりするタイプの人ですか?
771
名前:
デフォルトの名無しさん
:04/08/04 21:08
STLもboostも他人が作ったもんだがバリバリ使っておる。
便利である。
772
名前:
デフォルトの名無しさん
:04/08/04 21:18
>>770
普通作るでしょ。ライブラリと呼ぶかどうかは別として。
コピペ用の汎用ソースとか。
これなしに、何が蓄積されていくわけ?
で、突き詰めてくと要らないものも判ってくる。
773
名前:
デフォルトの名無しさん
:04/08/04 21:24
まだ続けますか
774
名前:
デフォルトの名無しさん
:04/08/04 21:25
>>768
だから、あんたは実戦経験が豊富なんだろ?
実戦経験足りない俺に具体例を提示してくれよ。
どうしてのらりくらりと核心から逃げるんだ?
他人のクラス使ってもその結論が出せないんだけど、
それは実戦経験が足りないからなんだろ?
実戦経験が足りないのにまた人様のクラス使っても同じことだって。
563以外の人間のほとんどが実戦経験たりなくて、
563だけが正しい結論を出しているなんてとても状況信じがたいだろう。
普通は少数派が間違っているものだ。
そうではないと言い張るなら、563自身の結論とやらを語って聞かせるべきでないのか?
775
名前:
デフォルトの名無しさん
:04/08/04 21:26
>>773
Doom3の割れ厨が不愉快だから、このスレで気分転換してた。
正直すまんかった。今は反省している。
776
名前:
デフォルトの名無しさん
:04/08/04 21:29
他人が作ったライブラリを使うと奴隷になったような気分になるという、
そういう性分なんじゃないの? 適正の問題になってくるかと。
777
名前:
デフォルトの名無しさん
:04/08/04 21:30
実践を語るなら、正しい方法とやらは多くの人間に認知されている手段であるはずだけど、
そこに触れないって事は、やっぱり一人で完結してる趣味グラマなんだろな。
778
名前:
デフォルトの名無しさん
:04/08/04 21:33
他人が作ったOSのAPIごときに振り回されて奴隷になったような気分にはならんのだろうか。
779
名前:
デフォルトの名無しさん
:04/08/04 21:42
>>777
わかってる人間はわざわざこんなくだらない話題に参加してない
780
名前:
デフォルトの名無しさん
:04/08/04 21:43
>>772
そういった「俺ライブラリ」が無駄に再生産されないで済むように、
標準ライブラリやら boost やら MFC やら ATL やら WTL があるわけで・・・
>>778
こういう人は I/O ポート直叩きですよ。んで「このチップの仕様腐ってる。
はぁ?割り込み?オーバーヘッドありすぎ。ポーリングで十分」とか言ふの。
781
名前:
デフォルトの名無しさん
:04/08/04 21:52
>>778
他人が作ったA○tiveDirect○ryに振り回されて奴隷になったような気分でつ。
782
名前:
768
:04/08/04 21:53
>>778
なるよ。もちろん。
MFC、ATL、WTL、boostだけで十分にウンザリ。
これに加えて独自クラスで独自の例外スローされたらたまらんよ。
783
名前:
デフォルトの名無しさん
:04/08/04 21:54
>>782
なんでこの仕事してんの?
784
名前:
デフォルトの名無しさん
:04/08/04 21:55
そのうち「他人の作った言語仕様に振り回されて〜」でC++を卒業すると。
とっとと出てってくて。
785
名前:
768
:04/08/04 22:00
自分と次元の異なる存在に振り回されるのは仕方ないでしょ。法人とか団体とか。
で、他のPGの半端な設計を喜んで受け入れるわけ、藻前ら?
786
名前:
デフォルトの名無しさん
:04/08/04 22:12
>>785
あるモノは使う。もはや一から自分で作っていて、期日通りにリリースできる
状況にはない。
いやほんとに、勘弁して下さいよ。最近の開発大規模化は……。
787
名前:
デフォルトの名無しさん
:04/08/04 22:17
まぁよく出来たライブラリ使う分には感動するが糞なライブラリ使ってると殺すって気になるな。
MFCとかCOMとか。同僚のしょぼい設計は却下
STLとかは感動した
788
名前:
デフォルトの名無しさん
:04/08/04 22:20
設計が腐ったライブラリは例外投げようが投げまいが腐ってることに変わりはないだろ。
789
名前:
デフォルトの名無しさん
:04/08/04 22:21
>MFCとかCOMとか
どちらも、かの会社のだな
790
名前:
デフォルトの名無しさん
:04/08/04 22:23
むしかえすようだが、500あたりで話してた奴は例外を基本としてる関数書き換えれば問題解決じゃないの?
791
名前:
デフォルトの名無しさん
:04/08/04 22:24
漏れなら設計方針に多少何アリでも、機能をそこそこちゃんと提供していて
そこそこ枯れてれば、なんでもありがたく使っちゃうよ。
そーいう意味では MS の Win32API と称される肥大化を続ける dll 群とか
COM 関連コンポーネントなんか最高。
WebBrowser、XMLパーサ/DOM、文字コード推定/変換、etc。
792
名前:
デフォルトの名無しさん
:04/08/04 22:37
>文字コード推定/変換
これの名前おせーて
793
名前:
デフォルトの名無しさん
:04/08/04 22:45
> そこそこ枯れてれば
真にプロなら、これ重要だって知ってるよな。
794
名前:
デフォルトの名無しさん
:04/08/04 22:47
>>790
それは、自分のプログラムのせいでPCが落ちたときに、
Windowsが不安定じゃなくなればいいとか言うのと同じだ。
795
名前:
デフォルトの名無しさん
:04/08/04 22:57
>>655
例外は投げないということか。
ライブラリユーザ(ひいてはアプリユーザ)にどこが悪いのか知らせることを
放棄しちゃうんだね。
xpathっぽいもの作って例外クラスに格納するとか答えてくれるかと
思ったんだがな。
796
名前:
デフォルトの名無しさん
:04/08/04 22:58
プロとか関係なしに、枯れてる方がいいに決まってる
797
名前:
デフォルトの名無しさん
:04/08/04 23:05
枯れてることを望むのがプロ
798
名前:
デフォルトの名無しさん
:04/08/04 23:06
いやいやいやいや、アマだって枯れてるのを望みますって!
799
名前:
デフォルトの名無しさん
:04/08/04 23:08
>>789
だから糞って言っただけだろ。
COMなんて、あの時代であれ以上の言語非依存バイナリ互換フレームワーク
なんて存在しないし、糞とか言うもんじゃねーもん。
OLEとかのCOMで実装されたライブラリに糞なものはあったかもしれないけどな。
800
名前:
デフォルトの名無しさん
:04/08/04 23:13
789だが、なんでそんな勢いで突っかかられるのか分からん。
801
名前:
デフォルトの名無しさん
:04/08/04 23:29
>>800
明確な理由なく貶すからだろ。てかM$信者なんだろ・・・
802
名前:
デフォルトの名無しさん
:04/08/04 23:35
んな程度でファビョんなよ。
803
名前:
デフォルトの名無しさん
:04/08/04 23:40
MS信者なんているのか?
アンチ・アンチMSなら良くみるが。
804
名前:
デフォルトの名無しさん
:04/08/04 23:41
要するに他人が作ったのは、その癖を理解して手足のように使いこなせるようになるまでに時間が必要ってことだろ。
その価値があるかどうかは別問題として。
805
名前:
デフォルトの名無しさん
:04/08/04 23:42
そんなに他人の作ったもの毛嫌いするなら、使う事を考慮するなっつの。
標準ライブラリとOSのツールキットしか触るなよ、タコ。
806
名前:
デフォルトの名無しさん
:04/08/04 23:45
何の話してたんだっけ
807
名前:
デフォルトの名無しさん
:04/08/04 23:53
プリンに醤油をかけると何味になるか?じゃなかったっけ?
808
名前:
デフォルトの名無しさん
:04/08/04 23:59
えと、いちご味のばななだろ。
809
名前:
デフォルトの名無しさん
:04/08/04 23:59
アボガドに醤油をかけるとトロのアジがするとか?
810
名前:
デフォルトの名無しさん
:04/08/05 00:03
アボガドにトロをかけるとアボガドロのアジがするとか?
811
名前:
デフォルトの名無しさん
:04/08/05 00:06
>>808
プリンに醤油をかけるとバナナになるのか??
812
名前:
デフォルトの名無しさん
:04/08/05 00:11
落ちる気配がなさそうにないのでそろそろ寝まつ。
813
名前:
デフォルトの名無しさん
:04/08/05 00:22
そんな時には例外スロー
814
名前:
デフォルトの名無しさん
:04/08/05 00:22
>>551
std::ifstream ifs(filename);
ifs.exceptions(std::badbit|std::failbit);
これでオープン失敗してれば例外が飛びます。
さらに、以降 ifs に対する操作で何か失敗すれば即例外が飛びます。
ただしデストラクタにクローズを任せた場合、クローズの失敗で例外は飛びません。
ただ、型はすべて std::ios::failure ですし、 what() の内容は
今まで試した処理系での結果を見るに期待できないので、
的確なエラーメッセージを要する場面ではこれだけで済ませるわけにはいかないでしょう。
それでも、テストプログラムなどで失敗後のプログラム継続を防止したいだけなら重宝します。
願わくば、各iostream実装は、もっと what() に情報を詰めて欲しいです。
strerror(errno) とか、VC++なら FormatMessage() の結果とか、
catchしたタイミングで errno や GetLastError() に実際の原因が入っている保証が無いので、
自前でやったとしても不安が残ります。
815
名前:
デフォルトの名無しさん
:04/08/05 00:27
そういえば、例外発生中のデストラクタで例外を発生させることが出来ないわけですが、
例外発生中かどうかを判断する関数とかってありますか?
816
名前:
デフォルトの名無しさん
:04/08/05 00:45
>>815
std::uncaught_exception()
ただし、以下のリンク先を理解せずに使うことは許しません。
http://www.gotw.ca/gotw/047.htm
817
名前:
デフォルトの名無しさん
:04/08/05 00:48
つーか、例外中かどうか判断するのは別にいいけど
デストラクタで例外投げるのは禁じ手だったような。
818
名前:
デフォルトの名無しさん
:04/08/05 01:02
C++例外について批判的なみなさんは、↓から始まるコラムを読まれることをお勧めします。
http://www.microsoft.com/japan/msdn/library/ja/jpdndeepc/htm/deep051099.asp
第 1 部〜第 17 部までの間に筆者自身の意見が揺れているのが面白いですが、
そのせいで部分的に読むと大変な誤解をする可能性もある危険な文書です。
是非通して読んでみてください。
819
名前:
デフォルトの名無しさん
:04/08/05 01:14
uncaught_exception();
820
名前:
デフォルトの名無しさん
:04/08/05 04:02
クラス例外スローマンセー厨は大人しくなったな。
クラス例外は使いこなすのに結構骨が折れる。
というより、実用的に作られてないと使う人がかなり悲惨。
821
名前:
デフォルトの名無しさん
:04/08/05 04:29
逆のロートルもおとなしくなったな
822
名前:
デフォルトの名無しさん
:04/08/05 06:52
カレーにウンコをかけると、ウンコ味のカレーになる
823
名前:
デフォルトの名無しさん
:04/08/05 07:03
>>820
クラス例外って言葉はブーム?
クラス例外に醤油かけると何味だっけ?
824
名前:
デフォルトの名無しさん
:04/08/05 09:55
>>817
いや、例外発生中じゃなければいいわけで、815の言ってることは正しいんだけど、無理だと思うよ。
だからデストラクタで例外投げるなって言われてるわけだし。
825
名前:
デフォルトの名無しさん
:04/08/05 10:20
class C {
T *p1, p2;
public:
C() : p1(new T), p2(new T) {}
~C() { delete p1; delete p2; }
};
p2(new T) が例外を出したら p1はメモリリークする?
もしそうならnewで初期化するのはやってはいけない?
826
名前:
825
:04/08/05 10:37
>>818
に書いてあったわ。
827
名前:
デフォルトの名無しさん
:04/08/05 10:42
>>825
する。
そのためにfunction-tryブロック(って名前でいいんだっけ?)があるけど、多くの処理系で未対応。
解決法としては、
・初期化子じゃなくて代入文を使う(ダサいけど)
・生ポインタをメンバに持つんじゃなくて、std::auto_ptrなどにする
などがいいんじゃないでしょうか。
828
名前:
デフォルトの名無しさん
:04/08/05 10:42
うーん。
スレの性質上、例外処理の挙動について語り合うのは価値のあることだけど、
その事と実用とはまた別のものだな。
昨日は、混同する馬鹿が暴れてたみたいだな。乙
829
名前:
デフォルトの名無しさん
:04/08/05 10:44
>>825
あと、細かいけど、
> T *p1, p2;
T *p1, *p2;
だよね?
830
名前:
デフォルトの名無しさん
:04/08/05 10:52
うん
831
名前:
デフォルトの名無しさん
:04/08/05 11:52
今日は静かだなぁ。
832
名前:
デフォルトの名無しさん
:04/08/05 11:58
嵐の前の
833
名前:
デフォルトの名無しさん
:04/08/05 12:10
V6
834
名前:
デフォルトの名無しさん
:04/08/05 12:30
アボ「カ」ド
835
名前:
デフォルトの名無しさん
:04/08/05 13:04
アボガド の検索結果 約 56,800 件中 1 - 50 件目 (0.33 秒)
アボカド の検索結果 約 53,800 件中 1 - 50 件目 (0.19 秒)
836
名前:
デフォルトの名無しさん
:04/08/05 13:34
カドルト
837
名前:
デフォルトの名無しさん
:04/08/05 13:38
\モウ/ \ね/ \ アボカド / \ 馬 / \ 鹿 / \ カト /
∩ ∩
| つ ⊂|
∩;;;∩ ∧ノ~ ! ,'っ _c,!
(Y;;;;;;;;;;ヽノ) ヽ ミ| ・ \ ⊂/ ・ \
i;;;;;;;;;;゚;;;゚ヽ γ⌒^ヽ ミ| ... '_) | __,,▼ ∫
/;;;;;;\;;;;'⌒) /::::::::::::::ヽ ミ| (,,゚Д゚) |・ (,,゚Д゚) (,,゚Д゚)
)|;;;;;;;;(,,゚Д゚) (⌒)(⌒) /.:::::::::(,,゚Д゚) | (ノ |) | (ノ |) ⊂三つ: つ ババンバ
ι|;;;;;;;つ ;;;/つ ( ・Å・) i::::::(ノDole|) | 馬 | |・・ .鹿 | |||||||| バン
ヽ..;;;;;;;;/ γ⌒ ( ゚Д゚)) ゙、:::::::::::::ノ 人.._,,,,ノ ι・,,__,ノ | | バン
U"U 乂_) UU U"U U"U U"U U"U :y=-( ゚д゚)・∵;; バーン
838
名前:
デフォルトの名無しさん
:04/08/05 14:27
アボカド 【avocado】
クスノキ科の常緑高木。中米原産。果実は黒緑色または緑色の
洋梨形または楕円形で,中に大きな種子が 1 個ある。果肉は
黄緑色のチーズ状で,脂肪・タンパク質を含み,生食される。
ワニナシ。
〔アボガドとするのは正しくない〕
839
名前:
デフォルトの名無しさん
:04/08/05 14:30
ドナルド
840
名前:
デフォルトの名無しさん
:04/08/05 18:03
class C{};
struct S{ S( ... ); };
sizeof( S( C() ) );
とすると、 C() が 関数値 C、引数 void の関数とみなされ、S() の C++ スタイルのキャストとみなされてしまいます。
S のコンストラクタの引数に C を渡すように認識させたいのですが、どうすれば良いでしょうか?
841
名前:
デフォルトの名無しさん
:04/08/05 18:14
>>840
sizeof (S((C())));
または
sizeof (S(C::C()));
842
名前:
デフォルトの名無しさん
:04/08/05 18:20
主旨から外れるが
sizeofなら型名だけでいいのではないか。
843
名前:
デフォルトの名無しさん
:04/08/05 18:26
実はテンプレートで複雑なコンパイルタイム演算が発行されるとか。
844
名前:
デフォルトの名無しさん
:04/08/05 18:34
>>840
sizeof S(C())
845
名前:
デフォルトの名無しさん
:04/08/05 18:39
>>844
うお!
なんかちょっと感動
846
名前:
デフォルトの名無しさん
:04/08/05 18:40
>>844
sizeof(SCO)に見える
847
名前:
デフォルトの名無しさん
:04/08/05 19:03
なんだかこのスレッドの方が問題を解決してくれそうな予感がします。
1ヶ月位経ちますが、InternetExplorerのボタンを押したり、URLを押したりすると
エラーが出てこの様な英文が表示されるのです・・・。
Microsoft Visual C++ Runtime Library
Buffer overrun detected!
A buffer overrun has been detected which has corrupted
the program's internal state.The program cannot safely
continue execution and must now be termineted.
です・・。この相談を他のサイト等で2回投稿したのですが、
スルーされるばかりで・・・。誰にも分らない程ヤバイのかと思っていました・・。
OSはWindows Meです。
分かる方いましたら解決法を教えてください。お願いいたします。
848
名前:
デフォルトの名無しさん
:04/08/05 19:06
再インスコ
849
名前:
847
:04/08/05 19:10
度々すみません。
英文の最後の単語は
×・・・・termineted
○・・・・terminated
でした。
850
名前:
デフォルトの名無しさん
:04/08/05 19:12
再インスコ
851
名前:
デフォルトの名無しさん
:04/08/05 19:12
だから再インスコしろつってんだろ
スレ違いな上下らなぇことでスレ消費すんなボケ
852
名前:
デフォルトの名無しさん
:04/08/05 19:14
再インスコってなんですか・・・
初心者で分からないです・・・すみません。
853
名前:
デフォルトの名無しさん
:04/08/05 19:16
あのぅ、C++相談室ってどこですか?
なんか間違えちゃったみたいで…
854
名前:
デフォルトの名無しさん
:04/08/05 19:26
>>847
http://pc5.2ch.net/win/
ここは行ってみた?
855
名前:
847
:04/08/05 19:36
>>854
レスありがとうございます。
行ってはみたのですが、レスはしてないです・・。
私はスレ違いの事を書いてしまっているのですか?
すみませんでした。 英文の中に「C++」と書いてあったので・・・・
ご迷惑おかけしました。
856
名前:
デフォルトの名無しさん
:04/08/05 20:04
>>847
それって普通、キミのプログラムがどっか頓珍漢なメモリ領域に書き込んでぶっ壊しているってことだよ。
例えば、128バイトしかヒープメモリーを確保していないバッファに256バイト書き込んでいるとか。
対処法は、キミのプログラムのバグを取るしかない。
857
名前:
デフォルトの名無しさん
:04/08/05 20:06
人生をシャットダウンすれば無問題
858
名前:
デフォルトの名無しさん
:04/08/05 20:15
>>856
「キミのプログラム」なんか存在しないんだと思う
859
名前:
デフォルトの名無しさん
:04/08/05 20:20
とりあえず常駐プログラム全部切ってから、IEを操作してみては。
VC++で作った、バグの残ったアプリを一月前にインスコしたって
ことなんではなかろうか。どっちにしてもC++の話題ではないな・・・。
860
名前:
デフォルトの名無しさん
:04/08/05 23:38
「C++のクラス = 構造体」
ってことでOKですか?
861
名前:
デフォルトの名無しさん
:04/08/05 23:39
???
じゃあクラスと構造体が二個ある意味って何よ
862
名前:
デフォルトの名無しさん
:04/08/05 23:40
>>861
Cとの互換性のため
863
名前:
デフォルトの名無しさん
:04/08/05 23:41
むしろC++の構造体=クラスの劣化版
じゃないの?
864
名前:
デフォルトの名無しさん
:04/08/05 23:45
劣化してないよ。
865
名前:
デフォルトの名無しさん
:04/08/05 23:48
structにclassの機能を付与したのは
例によって付与しないデメリットが思いつかないという
思い付きによって決められた糞仕様なんだよ。
866
名前:
デフォルトの名無しさん
:04/08/05 23:54
>>865
そうか。思いつきだったのか。別にCのstructの機能そのままでも
良かったような気もしたりしてたんだよな。
デフォルトのアクセス制限が違うだけなんだもん。
867
名前:
デフォルトの名無しさん
:04/08/05 23:55
ファンクタを簡単に書くためだろ
868
名前:
デフォルトの名無しさん
:04/08/06 00:00
つーか、classがデフォルトprivateなのもあんま意味ないよな。
869
名前:
デフォルトの名無しさん
:04/08/06 00:01
カプセル化しないバカを減らすためだろ
870
名前:
デフォルトの名無しさん
:04/08/06 00:03
>>867
それだ!
871
名前:
デフォルトの名無しさん
:04/08/06 00:03
interfaceもそうだけどあとからstructの性質を利用しただけだろ
872
名前:
デフォルトの名無しさん
:04/08/06 02:00
すいません、
空のフォルダを削除するにはどうしたらいいのでしょうか?
googleで検索してもなかなか見つからず、
やっとサンプルコードが見つかったと思ったら、ないヘッダがインクルードしてあって
結局分かりませんでした。
873
名前:
デフォルトの名無しさん
:04/08/06 02:01
標準C++にはありません
874
名前:
デフォルトの名無しさん
:04/08/06 02:03
ファイルシステムの操作は,環境依存。
自分の環境スレ逝け。
875
名前:
872
:04/08/06 02:06
>>874
環境ということは・・・
えーと・・・
BCC使ってるのでBCCスレということですね。
分かりました。
BCCスレで聞いてきます。
876
名前:
デフォルトの名無しさん
:04/08/06 02:10
天然
877
名前:
デフォルトの名無しさん
:04/08/06 03:30
removeで消えるんじゃねーの?
BCCはしらんけど
878
名前:
デフォルトの名無しさん
:04/08/06 08:02
消えるかもしれないが、消えないかもしれない。
879
名前:
デフォルトの名無しさん
:04/08/06 11:35
>>878
くだらん
880
名前:
デフォルトの名無しさん
:04/08/06 11:43
DOSのコマンド呼び出しちゃえば?
rdだっけ。
881
名前:
デフォルトの名無しさん
:04/08/06 12:31
class A
{
int d;
A() : d(0) {}
};
はできるけど
class B
{
char s[16];
B() :s(0) {}
};
はできないよね。
コンストラクタで配列を初期化したい時はどうすればいいの?
882
名前:
デフォルトの名無しさん
:04/08/06 12:32
newしろ
883
名前:
デフォルトの名無しさん
:04/08/06 12:33
newすると0フィルされるの?
884
名前:
デフォルトの名無しさん
:04/08/06 12:34
>>881
残念ながら、できない。
C++の仕様の穴と言われております。
でも、配列なんて滅多に使わないしなぁ。
885
名前:
デフォルトの名無しさん
:04/08/06 12:35
>>881
つーか暮らす定義の中に書かなけりゃいい
886
名前:
デフォルトの名無しさん
:04/08/06 12:37
std::memset(s, 0, sizeof(s));
ただ0のバイナリイメージが0じゃない環境では
うまくいかない希ガス。なので漏れは for で回してる。
887
名前:
デフォルトの名無しさん
:04/08/06 12:39
std::fill使えばいいやん
888
名前:
886
:04/08/06 12:42
Σ(゚Д゚)…!!
889
名前:
デフォルトの名無しさん
:04/08/06 12:48
>>886-887
それは初期化じゃなくて代入
890
名前:
デフォルトの名無しさん
:04/08/06 12:50
では std::vector ということで
891
名前:
デフォルトの名無しさん
:04/08/06 12:52
char[16]にMD5とか格納したい時にわざわざ
vector作るの?
892
名前:
デフォルトの名無しさん
:04/08/06 12:53
char なら std::string で。だめ?
893
名前:
デフォルトの名無しさん
:04/08/06 12:54
std::stringってバイナリ格納してもいいの?
894
名前:
デフォルトの名無しさん
:04/08/06 12:54
char[16]よりはvectorがいい
895
名前:
デフォルトの名無しさん
:04/08/06 12:56
腹くくって素直にstd::fill()しる
896
名前:
デフォルトの名無しさん
:04/08/06 12:56
>>893
いいよ。
正直char s[16]は突っ込むところじゃないと思う。
897
名前:
デフォルトの名無しさん
:04/08/06 12:57
標準関数使ってる人はなに作ってるの?
898
名前:
デフォルトの名無しさん
:04/08/06 13:08
for( int j = 0; j < 1000; j++ ){
try{
throw j;
}
catch(int z){
}
100回目で落ちます。なぜ?
899
名前:
デフォルトの名無しさん
:04/08/06 13:10
環境書けよ。
あと普通のクラスthrowした場合は?
900
名前:
デフォルトの名無しさん
:04/08/06 13:15
>>881
char []の0 fillなら初期化に頼らずに、
コンストラクタ本体での代入で十分じゃないですか?
901
名前:
デフォルトの名無しさん
:04/08/06 13:19
>>900
0でいいなら、なにもしなくても0じゃなかったっけ?
902
名前:
デフォルトの名無しさん
:04/08/06 13:21
>>901
まともなOOPLならその通り
903
名前:
デフォルトの名無しさん
:04/08/06 13:34
>>898
中括弧の数が合わないが
904
名前:
デフォルトの名無しさん
:04/08/06 13:40
時々あるが、質問者の「バイナリ」の意味がわからんな。
905
名前:
898
:04/08/06 13:47
失礼しました。
for( int j = 0; j < 1000; j++ ){
try{
throw j;
TXOwl::Raise(""); // どちらか
}
catch(...){
}
}
BorlandC++5.02J
WindowsXP
です。
どちらでも101回目で落ちます。なぜ?
よろしくお願いします。
906
名前:
デフォルトの名無しさん
:04/08/06 14:07
>>905
「落ちる」と言ってもいろいろあるんだけど。
具体的に。
907
名前:
デフォルトの名無しさん
:04/08/06 14:09
>>905
コンパイラ最新のにしてみたら。
あとTXOwl::Raiseが悪さしてるとはないんだよね。
908
名前:
デフォルトの名無しさん
:04/08/06 14:12
今年の夏もひとり。
自分のために夏休みは使うかな。
909
名前:
デフォルトの名無しさん
:04/08/06 14:12
↑
誤爆してスマソ
910
名前:
898
:04/08/06 14:56
>>906
ライブラリの中っぽい
0x77E33887 の pop si
でデバッガが止まります。スタックのエラーですかね?
>>907
throw 1; でも throw ""; でも同じ結果です。
コンパイラの更新ですか。ふぅ。
911
名前:
デフォルトの名無しさん
:04/08/06 20:24
配列が100しか用意してないから
初期化しないといけない
912
名前:
デフォルトの名無しさん
:04/08/07 09:30
?
913
名前:
デフォルトの名無しさん
:04/08/07 17:50
VC.NET 2003 で
int f() throw( int ){ ... }
ってやると
warning C4290: C++ の例外の指定は無視されます。関数が __declspec(nothrow) でないことのみ表示されます。
と出るのですが、これはどういう意味なのでしょうか?
914
名前:
デフォルトの名無しさん
:04/08/07 17:50
こんぱいらオプションに何か付けないとでるよ
915
名前:
デフォルトの名無しさん
:04/08/07 18:02
例外の指定は throw() 以外はサポートしてないということじゃない?
916
名前:
デフォルトの名無しさん
:04/08/07 18:14
warning C4290: C++ exception specification ignored except to indicate a function is not __declspec(nothrow).
indicateが「表示する」に訳されて怪しい日本語を醸し出している模様。
917
名前:
デフォルトの名無しさん
:04/08/07 18:23
文句があるなら 2005 買えや貧民どもが! by ゲイツ
ってことか
918
名前:
デフォルトの名無しさん
:04/08/07 19:34
>>913
こんな糞訳が許されていいのか?! (w
勝手に文を二つに分けてるし。except toくらい訳せよ。
919
名前:
デフォルトの名無しさん
:04/08/07 19:50
警告 C4290: C++例外指定は関数が __declspec(nothrow) ではないと示すことを除いて無視されます。
これでいいかな?
920
名前:
デフォルトの名無しさん
:04/08/07 19:54
でも 2005 で直る保証はどこにもないのか_| ̄|○
921
名前:
デフォルトの名無しさん
:04/08/07 19:55
わけたほうがわかりやすいじゃねーか
922
名前:
デフォルトの名無しさん
:04/08/07 20:19
>>919
示す場合を除いて
>>915
の表現が分かりやすいがな。
923
名前:
デフォルトの名無しさん
:04/08/07 20:21
「テンプレートパラメタを減少できませんでした」よりはまし。
924
名前:
デフォルトの名無しさん
:04/08/07 20:45
>>922
原文が "to indicate a function is __declspec(nothrow)" ならそれで納得いくんだが。
925
名前:
デフォルトの名無しさん
:04/08/07 20:55
>>924
いや、
>>922
は、
__declspec(nothrow) ではないと示す場合を除いて
のつもりです。
926
名前:
デフォルトの名無しさん
:04/08/07 20:55
__declspec(nothrow) ではないことを示す場合を除いて
か…
927
名前:
デフォルトの名無しさん
:04/08/07 22:04
そもそも
__declspec(nothrow)
自体がわかりにくい
928
名前:
デフォルトの名無しさん
:04/08/07 22:21
nothrow
でない
を除いて
だもんな…
さらに訳は間違ってる…
929
名前:
デフォルトの名無しさん
:04/08/08 14:20
唐突ですがポインタを直接やり取りする場合と比べて
ポインタへの参照をやり取りするメリットってどんなものがありますか?
930
名前:
デフォルトの名無しさん
:04/08/08 14:28
>>929
いくつかの違いがあるが、どれもメリットにもデメリットにもなり得る。
自分で判断すべき。
931
名前:
デフォルトの名無しさん
:04/08/08 14:57
>>930
レスどうもです。
どこぞのサイトにポインタ渡しをする奴なんてとんでもない
みたいな表現がしてあったので
何が何でも参照で受け渡しするべきなのかと思ってました。
例えば、
void func(int*& rp);
int * p;
func(p);
は無論OKで
int a[10];
func(a);
はエラーになるので
func((int *&)a);
とやるとコンパイルは通るけど希望の動作はしてくれません。
これがただのポインタだったら簡単にいくので
今のところデメリットしか浮かばないです。
例えばどんな場合にメリットになりますか?
932
名前:
デフォルトの名無しさん
:04/08/08 15:10
それとこれとは別だ
933
名前:
デフォルトの名無しさん
:04/08/08 15:15
>>929
例えばある関数にポインタを渡して、その内容を変更してもらいたいとき、
ポインタへのポインタだと
func(&p);
として呼び出さなければならないし、呼び出し先では
void func(int** p)
{
*p = hoge;
}
と書かなければならないが、ポインタのリファレンスなら
func(p);
呼び出し先では
void func(int*& p)
{
p = hoge;
}
とすっきりした感じになるだろう。欠点はこの裏返しでポインタの
リファレンスと宣言した事を覚えておかないと呼び出し先でポインタの
内容を変えられたりして「およよ」と思う事がある事とか。そんな所かな。
934
名前:
デフォルトの名無しさん
:04/08/08 15:16
>>931
整数をそのまま渡すか参照で渡すかというのと同じような違いですよ。
935
名前:
デフォルトの名無しさん
:04/08/08 15:20
>>931
そのサイトどこですか?
たぶんあなたが曲解してるだけです。
936
名前:
デフォルトの名無しさん
:04/08/08 15:30
>>933
丁寧なレスありがとうございます。
よく分かりました。
>>934
なるほど、つまりはそういうことなんですね。
納得しました。
>>935
以前ググっている最中にチラ見したサイトなんで
URLは失念してしまったのですが、
ポインタ渡しは不要だ、ぐらいの勢いだったと思います。
私の読み方が浅かったのかも知れません。
それと知人からポインタは推奨されないし
いっさい使わずに組めるし、そうしたほうが良いらしい
という話を聞いたもので。
でもその知人は初心者でいきなりC#を勉強中だったようで
今思うとC++の話ではなかったのだと思います。
937
名前:
デフォルトの名無しさん
:04/08/08 16:03
>>936
ものごとの理由を考えずに題目を信じるようなプログラマは要らない。
938
名前:
デフォルトの名無しさん
:04/08/08 16:05
あなたに必要とされたい訳ではないからご安心をw
939
名前:
デフォルトの名無しさん
:04/08/08 16:07
>>938
自分で
>>937
の言うようなプログラマだと自覚してるのか?
940
名前:
デフォルトの名無しさん
:04/08/08 16:11
NULL が渡る可能性があるなら参照はムリだし、整数を参照で渡すとオーバーヘッドで逆に遅くなる
>>938
氏ね
941
名前:
デフォルトの名無しさん
:04/08/08 16:15
参照渡しって不要だろ?
ポインタ渡しでポインタ書き換えちゃうアフォを避けるための機能でしかない。
942
名前:
デフォルトの名無しさん
:04/08/08 16:30
ポインタ渡ししてポインタを書き換えても何も問題は無いわけだが
943
名前:
デフォルトの名無しさん
:04/08/08 16:32
>>941
禿同。
あと p->func() とか *p とか書けないほど無精な香具師のための機能だね。
944
名前:
デフォルトの名無しさん
:04/08/08 16:33
>>937
一応理由を考えた上なんですけど
もしや自分では考えが及ばないサムシングがあるのかなぁって
思ったんですが
>933
と
>934
でそうではなかったんだ、と
使用目的に関してよく納得しました。
皆さんどうもありがとうございました。
945
名前:
デフォルトの名無しさん
:04/08/08 16:34
値渡しと参照渡し
ポインタ渡しと参照渡し
2つの対比をごっちゃにしてはいけない。
946
名前:
デフォルトの名無しさん
:04/08/08 16:37
>>944
理由を考えた上で「何が何でも参照で受け渡しするべき」なんて思うようでは意味が無い。
947
名前:
デフォルトの名無しさん
:04/08/08 16:41
>>941
演算子多重定義には必須。
948
名前:
デフォルトの名無しさん
:04/08/08 16:43
参照渡しが無いと演算子オーバーロードやコピーコンストラクタ、
catchの構文が不恰好になる。
値渡しとconst参照渡しで高性能な方を選べる。
参照の利点はそのくらいかな。
個人的には非const参照は嫌い。
949
名前:
デフォルトの名無しさん
:04/08/08 16:54
非const参照は、戻り値などに使う
950
名前:
デフォルトの名無しさん
:04/08/08 16:56
戻り値に参照ってそんなに使うか?
operator= くらいしかあんま思いつかん
951
名前:
デフォルトの名無しさん
:04/08/08 17:11
istream/ostream周りでは非const参照が大活躍してるな。
952
名前:
デフォルトの名無しさん
:04/08/08 17:14
operator []
953
名前:
デフォルトの名無しさん
:04/08/08 18:14
#defineで下のようなことをやりたいのですが、これはコンパイルエラーになります。
#define AAA() #define BBB 128
AAA() // #define BBB 128 に置き換わるようにしたい
上記のようなことは不可能なのでしょうか?
954
名前:
デフォルトの名無しさん
:04/08/08 18:17
>>953
不可能。#includeを使えば似たような事は出来る。
955
名前:
デフォルトの名無しさん
:04/08/08 20:09
>>943
> 禿同。
> あと p->func() とか *p とか書けないほど無精な香具師のための機能だね。
void foo(const std::string& s);
を
foo("hoge");
で呼びたくないのか..
956
名前:
デフォルトの名無しさん
:04/08/08 20:45
このスレで解かったことは、CからC++に移った人は、参照とか例外とかが使えないということ。
必要性より有用性の問題であるのに、なぜか、Cと同じ流儀でこうやればいい、となってしまう。
957
名前:
デフォルトの名無しさん
:04/08/08 20:49
いやいやこのスレだけ見て語られてもねぇ ^ ^ ;
958
名前:
デフォルトの名無しさん
:04/08/08 20:51
ダメなやつは何をやってもダメなんだよ!
959
名前:
デフォルトの名無しさん
:04/08/08 20:53
gotoを使ったエラー処理の必要が無くなるから例外処理は積極的に使うよ。
ただ、参照は不慣れなこともあって自分から積極的に使ってはいない。
960
名前:
デフォルトの名無しさん
:04/08/08 20:55
* が入りまくってると見にくいしな
961
名前:
デフォルトの名無しさん
:04/08/08 21:21
コンパイラファイアウォールイディオムって何ですか?
962
名前:
デフォルトの名無しさん
:04/08/08 21:25
>>961
Exceptional C++買え。自分への投資を惜しむな。
963
名前:
デフォルトの名無しさん
:04/08/08 21:26
>>958
お前がその典型的な例だな。
964
名前:
デフォルトの名無しさん
:04/08/08 21:34
>>961
Google先生に聞いてみれば十分。本なんか要らない。
965
名前:
デフォルトの名無しさん
:04/08/08 21:46
C++の設計の仕方でMFCのような
メンバー関数の中を書くだけでアプリケーションが出来るのは
どうやって作れば出来ますか?
966
名前:
デフォルトの名無しさん
:04/08/08 21:47
>>962
投資惜しまないけどC++の知識って他の言語に乗り換えた瞬間死滅しそうだな。
967
名前:
デフォルトの名無しさん
:04/08/08 21:47
>>964
でもCOMは本が無いと正直なところきついね
968
名前:
デフォルトの名無しさん
:04/08/08 22:20
pimplイディオムでそれらしききものが見つかったのですが、これはコンパイラファイアウォールイディオムと同じものでしょうか?
969
名前:
デフォルトの名無しさん
:04/08/08 22:38
そうだよ。
970
名前:
デフォルトの名無しさん
:04/08/08 22:56
ありがとうございます
実は Exceptional C++ の P96 を読んでて分からなくて聞いてみたんですが、
この本の第四章に詳しく書いてあるんですね _| ̄|○
灯台もと暗しでした
971
名前:
デフォルトの名無しさん
:04/08/08 23:06
>>964
この貧乏人めが!
972
名前:
デフォルトの名無しさん
:04/08/08 23:36
>964
ぐーぐる先生に頼ってると聞いた事あると意味わからない人になりますよ
973
名前:
デフォルトの名無しさん
:04/08/08 23:50
>>972
の書き込みの意味がわからないが、恐らく自己紹介をしてるんだろう。
974
名前:
972
:04/08/09 00:05
スマン自分で見てもよくわからん...
言葉だけ知ってても意味分からない人になるって意味をいいたかったんだよ
975
名前:
デフォルトの名無しさん
:04/08/09 00:19
×言葉だけ知ってても意味分からない人になるって意味を〜
○言葉だけ知ってても意味を知らない人間になるって事を〜
976
名前:
デフォルトの名無しさん
:04/08/09 02:09
>>959
関数内で完結するならやっぱりgoto使うな、オレの場合は。
977
名前:
デフォルトの名無しさん
:04/08/09 03:40
gotoって関数内({}内)だけで有効だから、
うまく使えばすごく便利で処理も見やすくなる。
978
名前:
デフォルトの名無しさん
:04/08/09 04:44
>>977
gotoを好んで使うようになると、ズルズルとスコープ拡大(行数増加)する傾向がある。
結果として、ローカル変数の管理が難しくなる。
979
名前:
デフォルトの名無しさん
:04/08/09 05:20
管理しなきゃいけないほどローカル変数がたくさんあるならそうだろうな(w
980
名前:
デフォルトの名無しさん
:04/08/09 07:27
>>977
throw-catchを使ってみては?
>>953
プリプロセッサでさまざまなことやるならboost::preprocessorを
ミニ言語となっているぐらい強力。
日本語訳のもあるけどSequences関連の高階マクロとかが乗ってないのでリファレンスは本家で見た方がいいかな。
981
名前:
デフォルトの名無しさん
:04/08/09 08:40
>>980
バカじゃねーのw
gotoを使わないことを目標にしてどうするw
絶対gotoを使ってはだめだとか思ってる思考停止バカは他人と接するな
982
名前:
デフォルトの名無しさん
:04/08/09 08:51
>>981
> gotoを使わないことを目標にしてどうするw
誰もそんなことは言ってないですねw
興奮しすぎて、脳内の仮想敵と実在の名無しの区別がつかなくなったんですか?
もうちょっと落ち着いて下さい。ただでさえ頭わるいんだからw
983
名前:
デフォルトの名無しさん
:04/08/09 08:55
(・∀・)ニヤニヤ
984
名前:
デフォルトの名無しさん
:04/08/09 08:56
グウの音も出なくなったら
とりあえずニヤニヤ
985
名前:
983
:04/08/09 08:59
>>984
ごめんなさい。私は第三者です。
ちょっかい出してすいませんでした。
986
名前:
デフォルトの名無しさん
:04/08/09 09:01
センスの欠片も無いその場しのぎの反応。
ダメだこりゃ( ´,_ゝ`)
987
名前:
981
:04/08/09 09:03
ヘ( `Д)ノ モーコネーヨ ウワァァァン!!
≡ ( ┐ノ
:。; /
988
名前:
デフォルトの名無しさん
:04/08/09 09:05
実行効率が悪い
989
名前:
デフォルトの名無しさん
:04/08/09 09:09
例外でやることに何の意味がある?
990
名前:
デフォルトの名無しさん
:04/08/09 09:21
C++らしくなる
991
名前:
デフォルトの名無しさん
:04/08/09 09:26
gotoは使っていないきれいなソースですと主張できる
992
名前:
デフォルトの名無しさん
:04/08/09 09:56
実行速度が重要な場合は例外を避けることもある。
993
名前:
デフォルトの名無しさん
:04/08/09 09:58
で、C++だからといって、例外を使わないコードを拒否することは思考停止。
C++はそういった設計も許容する懐の深い言語だ。
994
名前:
デフォルトの名無しさん
:04/08/09 09:59
>>993
懐が深いというか、なんでもありというか、節操がないというか。
でも、好きです。
995
名前:
デフォルトの名無しさん
:04/08/09 10:01
懐が深すぎると思うこともしばしばあるけどな・・・
996
名前:
デフォルトの名無しさん
:04/08/09 10:38
記念カキコ v(^-^*)
997
名前:
デフォルトの名無しさん
:04/08/09 10:40
998
名前:
デフォルトの名無しさん
:04/08/09 10:40
C++は時代遅れ
999
名前:
デフォルトの名無しさん
:04/08/09 10:41
STLつかうと一気に実行ファイルサイズが10倍に?!
1000
名前:
デフォルトの名無しさん
:04/08/09 10:42
>>999
環境によるだろ。
俺はBorland-C++5.6.2に -D_RTLDLL オプションを指定して、極力
ランタイムを使用するようにして使っているが、例えばstd::vectorを
使っても使わない時と比べ10Kほどしか増えない。
>>1000
すげえ。ダイナミックリンクしといてファイルサイズが増えないとかいってるよ。この人。
■過去ログ置き場に戻る■
1-
前250
次250
最新50
DAT2HTML
0.33f Converted.