Mám tento kód
class man
{
public:
int x,y;
int nx,ny;
bool live;
man();
~man();
void move(int nx, int ny);
void kill();
void posx(); // x position
void posy(); // y position
};
class BBishop1: man
{
};
Chci aby třída BBishop1(black bishop 1) dědila od man všechny funkce i vlastnosti. Když ale provedu toto
void BBishop1::move(int nx, int ny)
{
this->x=nx;
this->y=ny;
}
Tak mi to vyhodí error, že funkce move ve funkci BBishop1 není deklarována to, ale mělo obstarat dědění od man.
Kde je chyba?
Fórum › C / C++
Dědění
liborb napsal:
Ona je samozřejmě dědí a dědí je i s implementací. A pokud ji chceš v dceřiné třídě přetížít, tak ji v ní musíš i deklarovat.
A ještě poznámka k atributům, máš je taky public ... udělej je protected.
Proč je nezdědí včetně deklarace? Proč protected?
Jinak dík!
Zdědí vše, ale když ji chceš přetížít (implementovat v dceřiné třídě), tak ji musíš definovat stejně znovu.
Protected proto aby nebyly přímo přístupné, ale v dceřiné třídě ano.
A to poslední ... nastav návratový typ správně na int.
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 141 hostů
Podobná vlákna
Vysvětlení dědění — založil felix
Dedeni a objekty — založil advanced
Dědění java konstruktory — založil elix
OOP - Dedeni s vice tridama — založil Ruda
Moderátoři diskuze