1 名前:デフォルトの名無しさん [2008/05/14(水) 01:00:02 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.53【環境依存OK】 pc11.2ch.net/test/read.cgi/tech/1208989385/l50 【アップローダー】(質問が長い時はココ使うと便利) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
87 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:46:51 ] クラスを定義するときに専用のマクロを使うことにするとか
88 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:57:06 ] >>87 それを忘れないようにするためって話じゃないのか?w
89 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:02:42 ] >>88 忘れにくさという点で、 >>78 より>83 それより>>87 と良くなっているように見えるけど。
90 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:10:27 ] コピペ煽りに律儀に答えなくても
91 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:42:28 ] class NewClass : public Object の : public Objectを書かなかったらやっぱりバグるわけだしなー それじゃ意味ないだろう 継承しなければコンパイルエラーになるようにできるなら、別だが。
92 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:13:22 ] なんでループしてんの?
93 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:19:14 ] struct Object{virtual ~Object(){};}; #define STD_STRUCT(NAME) struct NAME : public virtual Object #define STD_CLASS(NAME) class NAME : public virtual Object STD_CLASS(ClassA) { public: ~ClassA(){std::cout << "~ClassA" << std::endl;} }; STD_CLASS(ClassB), public ClassA { public: ~ClassB(){std::cout << "~ClassB" << std::endl;} }; void f() { ClassA* p = new ClassB(); delete p; }
94 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:27:10 ] そしてそのマクロを使うのをつい忘れるわけですね、わかります
95 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:30:03 ] >>94 >>89 5レス前すら読めない人はこのスレに必要ありませんよ
96 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:31:46 ] いや、お前ら質問者の意図無視しすぎだろw
97 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:33:46 ] ツールでなんとかしたいと言ってる人間に、忘れないようにマクロを使いましょうってどんな返事なんだ 俺は必要としたことないから知らんが、書式チェックツールくらいないのか?
98 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:36:19 ] virtual忘れをチェックしてくれるツールくらい自分作ればいいんじゃね デストラクタは先頭に ~ が付いててわかりやすいから、 その前にvirtualが付いてるかどうかくらい簡単に判定できそう そもそもデストラクタを書いてない場合は役に立たないが・・・
99 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 16:38:42 ] >>96 >>78 を読む限り、まずミスを無くしたい、という目的があって、 その方法として警告、チェックツール「など」、 と手段の例を挙げているので、 同じく、ミスを無くす/減らす方法を書いてるレスが 意図を無視してるようには見えないけど?
100 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:06:19 ] とりあえず、抽象型へのアップキャストは極力控えて、 総称型プログラミングを覚えた方がいいと思った。
101 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:08:30 ] >>100 実行時ポリモーフィズムが必要な場合はどうするの。
102 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:10:55 ] だから極力控えて、って・・・。
103 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 17:31:36 ] 静的な方が安全というのは分かるが、 export のない C++ でジェネリックばっかやってると コンパイルが重くて現実的じゃない事も。
104 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 21:16:08 ] >>98 そしてそのツールでチェックするのをつい忘れるわけですね、わかります。
105 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:34:11 ] >>104 make使うならMakefileに組み込めばおk。 総合環境なら・・・ カスタムビルドステップ?
106 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 22:42:35 ] >>104 最悪、考え方としてはおかしくなったときにチェックすればいいわけだし。
107 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 23:08:54 ] あれ?ちょっとずれるが なんかの統合環境で、virtualな関数をオーバーライドする時にvirtualつけておかないとワーニング出すって設定できたよな? これはvirtualですよー、わかってますかー?って意味合いで
108 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:36:52 ] 微妙に宣言間違えて、いつの間にか別の仮想関数が作られちゃうのを防ぐ方法ってないかな。 delphiならviryualで新しく作って、overrideでオーバーライドするから間違えたらエラーになるんだがなぁ
109 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:37:37 ] virtualだな
110 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 00:41:27 ] override は最近の言語によく取り入れられているね。 あれはいい仕様だと思う。
111 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:18:54 ] >>107 それは余計なお世話な気もするな。コーディング規約レベルだと思う。
112 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 01:25:16 ] いんや。 仮想関数じゃないつもりで関数追加して泣きを見るのを防止できる。
113 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 09:07:18 ] なんにしろON/OFFできりゃいいんだよな overrideはいい仕様だ
114 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 11:38:49 ] Java みたいに問答無用で仮想関数にする言語は typo で泣くことになる。
115 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 11:52:39 ] そうした事もあって、C#では明示的にoverrideする必要になりましたとさ
116 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 12:19:28 ] それにならって、javaもoverrideをチェックする アノテーションが用意されました。
117 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:19:39 ] そしてC++はほったらかしと。
118 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:30:36 ] C++ は互換性を異常に気にするからな。
119 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:40:20 ] override付きのときだけチェックしてくれれば良いんだけどなぁ。その他(virtual付き/何もなし)の時は今まで通りで。
120 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:42:08 ] それはあんまり override の価値がない気が
121 名前:デフォルトの名無しさん mailto:sage [2008/05/18(日) 13:42:41 ] override が無い時に警告出してくれるならいいけど