我有一个名为human
的班级,其中包含int age, int height
,QString name
等信息。
用户点击按钮以添加新的人类信息,并且当用户输入信息(例如,john,johan,...)时,程序创建新的人类对象。
我想存储所有对象,然后我希望能够访问每个单独的对象及其成员。什么是最好的存储对象?
我在想的是在头文件
上声明static std::vector<human*> humanVector;
然后
humanVector.push_back( new human(name, age, height));
听起来是否正确,或者我是否需要采用不同的方式或使用不同的方法
static std::vector<std::shared_ptr<human>> humanVector;
答案 0 :(得分:0)
如果使用静态std::vector<human*> humanVector;
,需要确保在向量范围之前释放向量中的对象,否则会导致内存泄漏问题。
使用std::vector<std::shared_ptr<human>> humanVector;
是异常安全的,它负责解析对象。 std :: shared_ptr是一个智能指针,通过指针保留对象的共享所有权。当发生以下任一情况时,对象将被销毁并释放其内存:
拥有该对象的最后剩余的shared_ptr将被销毁。
拥有该对象的最后一个shared_ptr通过operator =或reset()分配另一个指针。