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

时间:2017-04-12 10:36:35

标签: c++ vector

我正在用向量编写一个简短的代码,该元素是自定义类对象。 自定义类还包含指向另一个类的指针。 在主进程中删除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;
  }
}

1 个答案:

答案 0 :(得分:0)

如果我正确地理解了你的问题,那你就要问&#34;当A实例出现时,如何让b_ptr指向的内存被解除分配?

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

struct A {
    A() {
        b_ptr = new B();
    }

    ~A() {
        delete b_ptr;
    }

    B* b_ptr;
};