Компилятор видит, что если вы создаете объект с помощью конструктора по умолчанию, то my_array
не инициализируется.Созданный по умолчанию объект может быть уничтожен, и в деструкторе вы получаете доступ к значению my_array
, которое будет иметь неопределенное поведение, если оно не будет инициализировано.
Конечно, вы, возможно, установили инвариант, что initialized
только true, если my_array
инициализирован, но компилятор не сможет доказать это.
Вы можете упростить свой класс, удалив член initialized
, и заменить все его сравнения сравнением *От 1011 * до nullptr
(кроме той, которая находится в деструкторе; эта проверка становится избыточной), и инициализируйте my_array
до nullptr
в конструкторе по умолчанию.Последнее изменение устраняет предупреждение.