Ez miért rossz? C++. Sürgős.
//Itt a forráskód:
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?
É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);
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.
Kezdem érteni.
Még valaki kifejtené ezt egy kicsit bővebben.
Adtam egy zöld kezet.
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.
Lehet hülyeséget mondok, de ha így próbálnád meg?
const Animal& Animal::operator++(int)
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.
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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!