- 424 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 22:37:54 ]
- Javaのインターフェースのような振る舞いをさせたい場合はどうしたらいいんだろう?
クロスキャストで質問なんだが。。。 Javaからの移植を今やってる。で以下の継承ツリーを持つクラスがある。 Object -> ClassA -> ClassB -> ClassC -> ClassD ↑ ↑ Object -> ClassE ↑ ↑ Object -> ClassF -> ClassG ※)みぎにいくほどサブクラス。ClassE,ClassF,ClassGはJavaではインターフェース。 BREWでは純粋仮想関数だけを持つクラス ちなみにClassBの宣言は class ClassB : public ClassA, public virtual ClassE ClassCの宣言も同様に class ClassC : public ClassB, public virtual ClassG でこのクラスに対して ClassD* classD = new ClassD(); ClassC* classC = (ClassC*)classD; ClassB* classB = (ClassB*)classC; Object* obj = (Object*)classB; とUPキャストしてObject型にする。んでそのあとに ClassG* classG = (ClassG*)obj; classG->hoge(); をやるとまったく違う関数が呼ばれてしまう。。。。どうしたらいいんだろ。。。。
|

|