I am not very proficient in C++. So I'll explain my problem as clearly as possible and when you are answering,please do some explanation.
So my problem involves 2 classes(A and B) with another class in a framework which I don't have access to. A has a pointer to B and B has a pointer to the A (raw pointers). The following show the interactions between the 2 classes.
class A {
  public:
    void method(){
      this->b_ = new B(this);
      SomeServiceClass::doSomething(std::unique_ptr<B>(this->b_));
    }
  private:
    B *b_;
}
class B {
  public:
    B(A *a){
      this->a_ = a;
    }
    someOtherMethod(){
    }
  private:
    A *a;
}
So what really happens is, A creates first, and inside a method() of A , I create B and pass the B as a unique_ptr to some other method implemented in another class of a framework(which I don't have access). So that way I transfer ownership of B to that other class. But during the lifetime of A, I want to access B's other methods. That is why I keep a raw pointer to B in the class A. (I could have used a shared_ptr instead but that SomeServiceClass::doSomething requires a unique_ptr). But my question is at the time A is destroyed. Should I override the destructor of A and assign this->b_ = null ? Or maybe delete ? Thanks in advance
Aucun commentaire:
Enregistrer un commentaire