Если у вас не будет нескольких владельцев указателя, который вы хотите использовать QScopedPointer
. QScopedPointer
берет на себя ответственность за указатель и уничтожит его при уничтожении экземпляра QScopedPointer
. Проверьте документацию для подробной информации.
Создание нового указателя
QScopedPointer<base> _currentOperation;
Если вы не предоставите указатель на конструктор, по умолчанию он будет 0
. _currentOperation может взять на себя ответственность за любой объект типа base
или любой производный тип base
, как обычный указатель (не забудьте использовать виртуальные деструкторы).
Если вы хотите установить _currentOperation
на новый указатель, используйте
_currentOperation.reset( the_new_pointer );
Операция reset
сначала уничтожит объект, которым QScopedPointer
владеет в настоящее время, а затем станет владельцем the_new_pointer
.
Есть несколько способов обойти указатель. Вы можете либо передать QScopedPointer
по ссылке, либо, если вы знаете (хотя не рекомендуется, если это необходимо), объект не будет удален, пока вызывающая функция его использует, вы можете передать указатель, вызвав _currentOperation.data()