Kezdőoldal » Számítástechnika » Programozás » Miért problémázik a másoló...

Miért problémázik a másoló konstruktor?

Figyelt kérdés

Mammal::Mammal(const Mammal &rhs): *itsAge(rhs.GetAge()) {

cout <<"Mammal copy Konstruktor \n";

itsAge = new short;

*itsAge = rhs.GetAge();

}


Hibaüzenet:

expected '{' before '*' toke


expected constructor, destructor, or type conversion before '(' token


expected identifier before '*' token


2012. jún. 16. 22:19
 1/4 anonim ***** válasza:
Ezt "*itsAge(rhs.GetAge())" meg minek??
2012. jún. 16. 22:23
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:

Egyszer benne volt könyvben egy olyan példa ahol így adott értéket egy tagváltozónak.


De ez most mutató és így nem működik.

Pedig jónak kellene lennie.

2012. jún. 16. 22:25
 3/4 A kérdező kommentje:

return new Mammal(*this);

Van egy ilyen kódsor a programban ez létrehoz egy új objektumot dinamikusan a *this paraméterrel és közben meghívódik a másoló konstruktor és a másolókonstruktorban beállítja az életkorát.

2012. jún. 16. 22:29
 4/4 iostream ***** válasza:

*itsAge(rhs.GetAge())


Ez nem működik. A pointert (az itsAge) lehet inicializálni, de amire mutat azt nem, mivel a pointer az adattag, és nem amire mutat. Ráadásul az a pointer ott még nem mutat sehova, hiszen nincs inicializálva, így ha nem lenne szintaxis hiba, akkor is segfault lenne jó eséllyel.

Így inicializáld: itsAge(new short(rhs.GetAge()))

2012. jún. 17. 08:34
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!