タイトルと同様に、QObjectの "this"ポインタに "q_ptr"ポインタが割り当てられているのはなぜですか?ソースコードです。QObjectの "this"ポインタに "q_ptr"ポインタが割り当てられているのはなぜですか?
使用ブローのようなソースコードでQ_Q()
マクロそして
QObject::QObject(QObjectPrivate &dd, QObject *parent)
: d_ptr(&dd)
{
>>Q_D(QObject);
>>d_ptr->q_ptr = this;/*question*/
.......
、すべて我々よう
QWidget*q_func() {return static_cast<QWidget*>(q_ptr);}
:
Q_Q(QWidget)
それは関数q_funによって処理Qポインタ()戻ります知っている、static_cast
は、親から子へのキャスト時には安全ではありません。
私は非常に約/*question*/
を欲しています、誰か私に秘密を教えることができますか?ありがとう!プライベート実装オブジェクト(PIMPL idiom)は、それが(非プライベートQObject
)で/のために働いているオブジェクトについて語られている
セマンティックノート: 'this'は' q_ptr'に割り当てられていますが、他の方法ではありません。 'a = b;':bの値はaに割り当てられます(つまり、aの値はbの値をとります) – tmpearce
hehe、ご意見ありがとうございました –