包含其他类的指针的自定义类的向量

Vector of custom class contained pointer of other class

本文关键字:向量 自定义 包含 其他 指针      更新时间:2023-10-16

我正在编写一个带有矢量的简短代码,其中元素是自定义类对象。自定义类还包含指向另一个类的指针。在主进程中删除aPtr后释放b_ptr的内存,因为它只在push_back对象到矢量时复制指针(不是存储的数据(。有什么想法可以解决这个问题吗?(*shared_ptr 无法在我的系统中使用。

谢谢~

struct myStruct
{
  vector<uint16_t> pers;
  vector<string>   strs;
};
class A
{
  A(){ b_ptr = new B() };      
  B* b_ptr;
};
class B
{
  B();
  vector<myStruct> mStruct;
};

主要流程如下

main()
{
  vector<A> v_of_a;
  A* aPtr;
  while(something != NULL)
  {
    aPtr = new A();
    //Handling with data for property of A, vector data of B
    v_of_a.push_back(*aPtr);
    delete aPtr;
  }
}
如果我

正确理解您的问题,那么您是在问"当 A 实例被释放时,我如何让b_ptr指向的内存被释放?

为此,您需要使用析构函数:

struct A {
    A() {
        b_ptr = new B();
    }
    ~A() {
        delete b_ptr;
    }
    B* b_ptr;
};