[2033] Re:『Java 謎』3.3 寄り道 - Cで継承を実現してみる
投稿者:(ぱ)こと管理人
2017/12/07 01:11:57
>また、『C 言語ポインタ完全制覇』改訂版の発売おめでとうございます。
ありがとうございます。
>>MethodTableIndexは利用者に晒す必要はないので、Shape.hに移動するのは
>>よろしくないかと思います。
>
>そうしますと、自分自身とサブクラスに公開する "ShapeP.h" にではいかがで
>しょう。
サブクラスは各メソッドのインデックスを知る必要はあるでしょうから、
ShapeP.hに置くことになるかと思います。本にあるPolyine.cとかでは、
配列の初期化子にしれっと書くことで、DRAW_INDEXを見ずに済んでいますが……
>ひとつ、またまぬけかもしれない質問を――
>p.179 List 3.16 l.19 などで super.super.…を回避するのに
> ((Object *)p)->classDescriptor = &polylineClassDescriptor;
>とかやるのはやっばりまずいですか。 (一応、動いてる模様ですが…。)
確かに動きますが、ポインタのキャストはやはり荒業なので、
可能であれば避けるべきかとは思います。