閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

VCL のクラス (TObject) から派生したクラスは、多重継承することができない

上のコードを実装している最中に、具象クラスを定義するところでコンパイルエラーになってはまったのでついでにメモ。

E2246 class は、抽象およびパブリックの、データを持たない単一の継承クラスの階層ではない というエラー。意味が分からない。ヘルプによると、コンパイラがクラス階層に制約を強制する、などとある。なぜに??

しばらくはまったあと、ふとルートクラスが意味もなく VCL のクラスを継承していることに思い当たり、調べてみるとこれが原因だった模様。 VCL のクラスや、そこから派生したクラスは多重継承することはできないと。

ということで、元々消す予定のものだったので、ばっさり関係を断ち切りました。しかしその影響で __property (BCB の独自拡張)) で VCL クラスから派生している時しか使えないオプションを使っていて、それらの修正もやる羽目に。うう……まあしかし、これもいずれやる予定だったのでちょうどよかったかな。