Kezdőoldal » Számítástechnika » Programozás » Ez miért rossz? C++. Sürgős.

Ez miért rossz? C++. Sürgős.

Figyelt kérdés

//Itt a forráskód:

[link]


A hibaüzenetek:

25: error: invalid abstract return type for member function 'const Animal Animal::operator++(int)'


És 25 től 28 sorig ugyanez a hibaüzenet van.

Miért?


2012. jún. 29. 23:39
 1/10 A kérdező kommentje:

Én ebből azt vettem ki,hogy ADT osztályban nem lehet operator postfix és más bemenő paramétert váró operatorok mint például ez:

operator+(const Animal &rhs);

2012. jún. 29. 23:45
 2/10 A kérdező kommentje:
Miért?
2012. jún. 29. 23:56
 3/10 anonim ***** válasza:

Az én tippem:

Az a baj, hogy egy konstans Abstract objektumot adsz vissza és nem pointert. A pointer ugye lehet bármilyen leszármazott is, amiben deklarálva vannak az absztakt függvények (Eat,Sleep,stb.), így viszont ezt az osztályt nem tudja példányosítani.

2012. jún. 30. 00:15
Hasznos számodra ez a válasz?
 4/10 A kérdező kommentje:

Kezdem érteni.

Még valaki kifejtené ezt egy kicsit bővebben.

Adtam egy zöld kezet.

2012. jún. 30. 00:24
 5/10 anonim ***** válasza:

Az a baj, h én sem tudok írni és keverem a fogalmakat is... :)


Szóval, van ez az absztrakt osztályod, amit az Eat,Sleep és társai függvények tesznek absztrakttá. Ezek önmagukban nem példányosíthatók, csak valamelyik leszármazottja, amiben ki vannak fejtve a virtual függvények. A 25-28. sori operátorok egy Animal típusú objektummmal térnek vissza és nem pedig referenciával, mint az előtte lévő. A referencia megengedi, hogy ez a visszatérési érték mondjuk egy Cat osztály legyen (ami nem absztrakt), viszont az Animal típusú visszatérési értékkel nem tud mit kezdeni (ez már nem lehet Cat), mert olyat nem tud példányosítani.

2012. jún. 30. 00:38
Hasznos számodra ez a válasz?
 6/10 anonim ***** válasza:

Lehet hülyeséget mondok, de ha így próbálnád meg?


const Animal& Animal::operator++(int)

2012. jún. 30. 10:28
Hasznos számodra ez a válasz?
 7/10 A kérdező kommentje:

cont Animal&

Ez postfix esetén csak érték szerint lehet.

Ez így nem jó.


Azért mert postfix esetén létre kell hozni egy ideiglenes objektumot ezt az objektumot fogjuk visszaadni miközben az originált megnöveljük.


Talán azért nem jó mert létre kell hozni egy ideiglenes objektumot de mivel az osztály ADT ezért nem példányosítható mégcsak ideiglenes objektum sem létrehozható.


Szerintem ez lesz a baj.

2012. jún. 30. 14:50
 8/10 A kérdező kommentje:

Egyszerűen az a baj,hogy érték szerinti átadásoknál,vagy visszatéréseknél létre kell hozni egy ideiglenes objektumot.

Az ADT osztály meg nem képes erre.


Erősítse meg valaki,hogy így van.

2012. jún. 30. 14:53
 9/10 iostream ***** válasza:
Nem csak ideiglenest, semmilyet sem képes létrehozni. És pont itt jön be, hogy nem értem, egyáltalán hogy gondoltad. Hogy használnád az értékét, ha valahogy létrejönne?
2012. jún. 30. 20:50
Hasznos számodra ez a válasz?
 10/10 anonim ***** válasza:
Nem tudod példányosítani az absztrakt osztályt,így *this -t sem tudod használni.
2012. júl. 1. 16:55
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, 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!