2016-11-21 6 views
0

Я определил класс с именем Node и я объявляю следующее переменный с помощью std::atomic:Как переопределить по умолчанию деструктора для STD :: атомных классов

atomic<Node *> head(new Node()); 

Node указателя, содержащегося в будет deleted когда сам атомный класс однако я хочу, чтобы указатель был удален в другом месте.

Я использую MinGW, и я проверил исходный код GCC, он использует деструктор по умолчанию.

Как я могу переопределить деструктор по умолчанию для атомного класса?

+4

_ «Указатель узла, содержащийся внутри, будет удален после уничтожения самого атомного класса» _ Он не будет удален. С чего взял? –

+0

Вы можете использовать, например, std :: shared_ptr , чтобы удалить память, указанную вашим указателем. Это позволяет настраивать разрушение. http://www.cplusplus.com/reference/memory/shared_ptr/~shared_ptr/ –

+0

['std :: shared_ptr'] (http://en.cppreference.com/w/cpp/memory/shared_ptr)? Кроме того, можете ли вы подробно остановиться на * актуальной * проблеме, которую вы хотите решить, с помощью этого «решения», с которым вы хотите помочь ([связанное чтение о проблеме XY] (http://xyproblem.info/))? –

ответ

3

Деструктор для atomic<Node*> не удаляет указатель, так что вам нечего делать.

 Смежные вопросы

  • Нет связанных вопросов^_^