QtクラスはパブリッククラスにQ_DECLARE_PRIVATE
マクロを持っています。マクロは、読み取ります。ここQ_DECLARE_PRIVATEマクロを定義中にreinterpret_castが実装d_fun()で使用される理由
#define Q_DECLARE_PRIVATE(Class)\
inline Class##Private* d_func() {\
return reinterpret_cast<Class##Private*>(qGetPtrHelper(d_ptr));\
}\
inline const Class##Private d_func() const {\
return reinterpret_cast<const Class##Private *>(qGetPtrHelper(d_ptr));\
}\
friend class Class##Private;
、私の理解Class##Private
あたりとしてd_ptr
のクラスの親、なぜreinterpret_cast
が使用されていないdynamic_cast
でしょうか?
親クラスの場合、 – StoryTeller
@StoryTellerのキャストは必要ありません。間違いなく、Qt pimplイディオムは明示的にhiearchiesについて何も想定できません。マクロは任意の消費コードで動作する必要があるAPIです。 – user268396
@ user268396、私のコメントはあなたの言ったことと矛盾していますか? – StoryTeller