タイトルのように、なぜ「q_ptr」ポインタが QObject の「this」ポインタに割り当てられているのですか? ソースコードで。
QObject::QObject(QObjectPrivate &dd, QObject *parent)
: d_ptr(&dd)
{
>>Q_D(QObject);
>>d_ptr->q_ptr = this;/*question*/
.......
次に、Q_Q()
次のようにソース コードでマクロを使用する場合:
Q_Q(QWidget)
関数 q_fun() によって処理される q ポインターを返します。
QWidget*q_func() {return static_cast<QWidget*>(q_ptr);}
私たちが知っているように、static_cast
親から子にキャストするときは安全ではありません。
私はとてもイライラして/*question*/
います,誰か私に秘密を教えてもらえますか?ありがとう!