多くの場合、Qt クラスをオーバーライドして、その動作を拡張または変更したいと考えています。しかし、ほとんどすべての Qt クラスは、QNetworkDiskCache 内で QNetworkDiskCachePrivate などの内部プライベート クラスを使用します。このアプローチには利点があることを私は知っています。しかし、private クラスには大きな問題があります。クラスのオーバーライドが非常に難しくなります。ソース コードを含む他の C++ クラス ライブラリでは、通常、クラス メソッドをオーバーライドし、親クラスの実装からコードをコピーし、必要な動作を実現するためにあちこちで小さな変更を加えます。ただし、Qt では、プライベート クラスはエクスポートされず、派生クラスには表示されません。Qt クラスは "d" メンバーを介してプライベート クラスで重要な内部データを保持するため、プライベートな内部クラスの不可視性により、動作拡張の可能性が非常に制限されます。いくつかの公開された public メソッドでのみ遊ぶことができます。
クラスのソース ファイル全体を抽出し、クラス名とファイル名の名前を変更してみました。しかし、Qt クラス ライブラリは非常に複雑に絡み合っているため、ほとんどの場合、そこから単一のクラスを抽出するのも面倒です。
ここで何かが恋しいですか?それとも、Qt クラスは拡張性の点で本当に悪いのでしょうか?