- 1 名前:デフォルトの名無しさん [2009/01/11(日) 11:21:38 ]
- C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part65 pc11.2ch.net/test/read.cgi/tech/1230341243/
- 760 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 20:35:38 ]
- 特に問題はないと思うけど、インターフェイスだと分かるようなクラス名にするとか工夫した方がいいかも
結局は規約次第だと思うが
- 761 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 20:59:23 ]
- >>760
レスありがとうございます。 やっぱり規約や、実装者の意識の問題になりそうですよね。 個人(自分だけ)での開発なので、その辺の問題は薄そうですが・・・ コンパイラで上手くカスタマイズして、 間違った実装したときに警告とか出せればいいんですけどね。
- 762 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 21:03:35 ]
- >>759
struct IHoge {virtual ~IHoge();}; struct IFoo : IHoge {}; struct IBar : IHoge {}; class Piyo : IFoo, IBar {}; Piyo piyo; このとき、(IHoge*)(IFoo*)&piyo == (IHoge*)(IBar*)&piyoが 真になるとは限らないということを許容できないなら、仮想継承を使うべきと言っておく。 処理系間や多言語間での互換性を高めるため、仮想継承を使っていないMSのCOMでは、 これが理由でポインタの比較が面倒(仮想継承の代わりに規約で縛りを入れて対処している)。
- 763 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 21:45:10 ]
- >>762
operatorの再定義のことを言ってる? よく分からん。
- 764 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 22:00:25 ]
- >>763
仮想継承しなければ、IFooの部分オブジェクトのIHogeとIBarの部分オブジェクトのIHogeは別物ということ。 インタフェースという元のお題からは外れるが、IHogeに非静的メンバ変数xがあれば、 IFoo側のxとIBar側のxは、仮想継承しないなら別々、仮想継承したら同一の存在だろ。 (かなり乱暴な言い方だけど) それと同じ話。単にメンバ変数がないからポインタの比較でもしないと問題が発覚しないだけで。
- 765 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 22:20:17 ]
- 教科書に書いてある内容なんだから
「仮想継承」も調べておいた方がいいとかで済ませればいいのに
- 766 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 23:49:51 ]
- >>762
レスありがとうございます。 仮想継承はよく理解してなかったんで、Wikipedia とかで調べてました。 多重継承する上で理解しておかないといけない概念ですね。 ありがとうございました。
- 767 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 23:52:40 ]
- おまえらスレがもったいないから
>>765さんが教科書で覚えたことはいちいち説明するなよ。 ググレカス。
- 768 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 23:56:49 ]
- 俺もC|Java|C#|VB厨だから仮想継承を調べてみた
たしかにこれはググればわかる気がする 今後は namespace C++{ 仮想継承 } とか名前空間で囲んでくれると名前的にわかりやすい RDFでも可
- 769 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 13:17:27 ]
- namespaceは神
これさえあればC言語風に書けるしなw クラス? そんなもんいらね。
- 770 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 13:26:09 ]
- namespaceはCに取り込まれるべきだと思うね
コメントの//より優先されるべきだった
- 771 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 14:31:19 ]
- namespaceだとC++と同じだから、namekukanでCに取り込んだら
どうだろうか
- 772 名前:デフォルトの名無しさん [2009/04/20(月) 14:33:16 ]
- programminglang::C::namespaceでいいよ。
- 773 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 15:40:24 ]
- namespace 入れてくれれば enum を気兼ねなく使えるしな
namespaceだとC++と同じだから、miniascapeでCに取り込んだらどうだろうか
- 774 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 19:37:14 ]
- 普通に
namespaceでいいよ。だからさっさと取り込んでくれ。
- 775 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 22:17:27 ]
- namespiceでいいよ
- 776 名前:デフォルトの名無しさん [2009/04/20(月) 22:20:40 ]
- namaespaceでいいよ
- 777 名前:デフォルトの名無しさん [2009/04/20(月) 23:33:28 ]
- namaekukanだろjk
- 778 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 23:35:43 ]
- 無名名前空間も頼む。
staticいちいち付けるの面倒なんじゃ。
|

|