Как я могу проверить, удаляется ли содержимое указателя? Если я использую QPointer, как это:
myClass::myClass(myStruct* p){
_p = p;//_p is a QPointer<myStruct>
}
myClass::function(){
if(_p) {_p->function();}
}
тогда у меня есть
myStruct* p = new myStruct();
myClass A(p);
delete p;
A.function();
будет ли вызываться последняя функция A.function () из-за функции _p-> () и, следовательно, вызывать нарушение прав доступа? когда я удаляю p, что будет с _p?
Если myStruct
это QObject
подкласс, то ваш код должен работать, столько, сколько можно сказать из показанных фрагментов. QObject
деструктор очистит каждый QPointer
указывая на разрушенный экземпляр. Если это не QObject
подкласс, то вы должны получить ошибку компиляции / ссылки.
Цитата из документы:
Обратите внимание, что класс T должен наследовать QObject или ошибку компиляции или ссылки
приведет к.