Wskaźnik do obiektu w konstruktorze

0

Witam.
Mam taki kod:

class A1{
  public:
  A1(std::string c ): a(c){};
  std::string a;
   
};

class B1{
   public:
     A1 *obj;
     B1(A1 *);
};

B1::B1(A1 *o)
{
      
}

int main()
{
  int err = 0 ;
  A1 *a1 = new A1("OBIEKT A1");
  B1 *b1 = new B1(a1);
  delete a1;
  std::cout << b1->obj->a << std::endl;

  return 0;
}

Jak powinien wyglądać konstruktor B1 aby była w nim tworzona kopia A1? Czy można tutaj zastosować Jakąs konstrukcję typu konstruktor kopiujący lub inną?

0

Można użyć konstruktora kopiującego.

0
     B1(const A1 *o) : obj(new A1(*o)) {}

albo

     B1(const A1 *o) {
       obj = new A1(*o);
     }

ale jak chcesz tak robić, to po co ci w ogóle wskaźnik przy obj?

class B1{
   public:
     A1 obj;
     B1(const A1 &o) : obj(o) {}
};
0

@Azarien, wszystko już napisał ;)
Dzieki.

PS.
Czyli własnego konstruktora kopiującego się tutaj nie da napisać ?

0

da się, ale po co.

  A1(const A1 &right) : a(right.a) {};

1 użytkowników online, w tym zalogowanych: 0, gości: 1