[2030] Re:『Java 謎』3.3 寄り道 - Cで継承を実現してみる
投稿者:藤四郎
2017/12/04 19:57:15
今回も懇切なご説明ありがとうございます。
また、『C 言語ポインタ完全制覇』改訂版の発売おめでとうございます。わた
しも、 Java の学習曲線がそれなりにゆるやかに感じられるようになったら、
ぜひ拝読して C もちゃんと理解できるようになりたいと思います。
>趣旨としては、複数階層の継承を実現するにはどうすればよいか、ということで
>よいでしょうか。
はい。
>MethodTableIndexは利用者に晒す必要はないので、Shape.hに移動するのは
>よろしくないかと思います。
そうしますと、自分自身とサブクラスに公開する "ShapeP.h" にではいかがで
しょう。
>ただ、上記mtの型は、宣言にあるとおり「voidを返す関数へのポインタへのポインタ」
>なので、sizeof(mt)ではポインタのサイズしか取れません。
初心者らしくやっぱりやらかしてしまいました。
じつは、いただいたご説明をコードに落とすべくそれなりに格闘したのですが、
お恥ずかしいことにとりあえず挫折します。『C 言語ポインタ完全制覇』改訂
版の拝読後に捲土重来を期して…。
ひとつ、またまぬけかもしれない質問を――
p.179 List 3.16 l.19 などで super.super.…を回避するのに
((Object *)p)->classDescriptor = &polylineClassDescriptor;
とかやるのはやっばりまずいですか。 (一応、動いてる模様ですが…。)
# わたしの理解吸収力がたんにしょぼいだけといえばそれまでではありますが、
# 『Java 謎+落とし穴』は読み返すたびに新たな発見があります。