3

私は数日間 Qt を使用してきましたが、なぜすべての API が独自のスマート ポインターの代わりにプレーン ポインターを使用するのか疑問に思いますQSharedPointer

それらを使用する方が一貫性がありませんか?

4

2 に答える 2

6

QSharedPointerQt API オブジェクトの所有権が通常 1 つのオブジェクトに排他的である場合、なぜ使用する必要があるのですか? 共有する必要はありません。

より適切な質問は、Qt がスマート ポインター (Qt または C++11) の代わりに生のポインターを使用する理由です。その理由は単純です。これらは新しい機能であり、C の後に Qt 5 がリリースされたにもかかわらずです。 ++11 (および内部で採用) の場合、スマート ポインターを使用するようにすべてを書き直すことは、面倒なだけでなく、ユーザー コードの下位比較可能性を消滅させることにもなります。

全体として、Qt API はこの点でやや欠けており、一貫性がないように見えます。たとえば、Qt のスマート ポインターが、独自のプライベート スマート ポインター実装を使用する QtQuick でサポートされていないことは大きな不便です。そのため、QML エンジンまたは C++ によって所有権を管理する必要がありますが、2 つの間で実際に共有することはできません。 .

于 2015-04-12T00:11:39.973 に答える