
Комментарии 5
Это наследие компиляторов без шаблонов. Почему не обновят/дополнят API, не понятно. Они, ведь, уже не раз забивали на совместимость.
QPointer label = parent->AddChild<QLabel>("Hello");Все эти умные указатели возникли из-за плохо продуманной архитектуры приложения, когда непонятно, кто владелец объекта, кто кого создает и удаляет. В Qt с архитектурой всё в порядке, поэтому такой проблемы не возникает.
Какая то ужасно дилетантская статья. Скорее всего сгенерирована нейросетью по запросу состоящему из заголовка.
1) QScopedPointer<QLabel> label(new QLabel("Hello", parent));
Дабл фри здесь не будет, в деструкторе ребенек убирается себя из списка детей. Зачем здесь ScopedPointer тоже непонятно, можно просто создать объект на стэке, если он будет нужен лишь временно - результат будет тот же (так иногда делают с QMsgBox). Ногострел может быть если только в рамках этого скоупа умрет уже сам родитель.
2) Любой умный указатель в таком цикле создаст оверхед.
Умный указатель в цикле просто не нужен, вы получаете невладеющий указатель на сырые байты изображения. Зачем тут вообще указатели если владеет данными сам QImage?
3)Хотя в новых версиях Qt иногда применяется QScopedPointer, использование std-аналогов там затруднено требованиями к бинарной совместимости (ABI).
Все намешано в кучу, std умные указатели ничем не хуже кутэшных при создании Pimpl. Человек даже не читал выхлоп нейросети, которая написала полную чушь. Pimpl как раз позволяет избежать проблем ABI и неважно как он реализован, эта идиома используется не только в QT
И так продолжать можно почти по каждому пункту, статья - мусор
Почему в C++/Qt нельзя просто взять и забыть про сырые указатели