Wskaźnik do obiektu w konstruktorze

Odpowiedz Nowy wątek
2011-07-13 09:26
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ą?

edytowany 1x, ostatnio: Taumas, 2011-07-13 09:34

Pozostało 580 znaków

2011-07-13 09:53
0

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

Pozostało 580 znaków

2011-07-13 09:57
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) {}
};

Pozostało 580 znaków

2011-07-13 10:04
0

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

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

edytowany 2x, ostatnio: Taumas, 2011-07-13 10:09

Pozostało 580 znaków

2011-07-13 10:17
0

da się, ale po co.

  A1(const A1 &right) : a(right.a) {};
edytowany 1x, ostatnio: Azarien, 2011-07-13 10:19

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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