У меня возникла проблема с вызовом деструктора класса дважды, когда я создаю общий ptr для моего класса.Деструктор класса, вызываемый дважды при создании shared_ptr
Я пытаюсь создать вектор объектов, и каждый объект имеет конструктор и деструктор.
Когда я делаю вызов, такие как:
std::vector<std::shared_ptr<ServoController>> servos;
bool CreateServo(int id)
{
std::shared_ptr<ServoController> servo = std::make_shared<ServoController>(ServoController(id));
servos.push_back(servo);
}
Конструктор сервоконтроллер называется, а затем сразу же Разрушитель для сервоконтроллер называется, перед этим функция push_back даже называется.
Затем, когда я закрываю приложение, деструктор для ServoController вызывается снова. Но конструктор только назывался один раз до сих пор (у меня только 1 объект в векторе). Должно ли, по крайней мере, заставить конструктора работать снова?
Есть ли способ сделать вектор моего класса, и для каждого объекта в векторе конструктор должен вызываться один раз, а деструктор должен вызываться один раз, когда объекты удаляются из вектора или вектора разрушается?
Спасибо, -D
Это мог быть конструктор перемещения, который был вызван, в отличие от конструктора копирования. –