【发布时间】:2017-05-24 09:36:48
【问题描述】:
当我为我的类创建共享 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);
}
ServoController 的构造函数被调用,然后 ServoController 的 Destructor 被调用,在它之前 push_back 函数甚至被调用。
然后,当我关闭应用程序时,会再次调用 ServoController 的析构函数。但是到目前为止,构造函数只被调用了一次(我在向量中只有 1 个对象)。至少它不应该让构造函数再次运行吗?
有没有什么办法可以为我的类制作一个向量,对于向量中的每个对象,构造函数都应该调用一次,而当从向量中删除对象或者向量是时,应该调用一次析构函数毁了?
谢谢, -D
【问题讨论】:
标签: c++