| | |
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
Autor | Správa |
---|
Registrovaný: 14.04.09 Prihlásený: 18.01.22 Príspevky: 1188 Témy: 198 |
Zdravím,
Čítam práve jednu knihu o C++ a mám tam taký príklad. Používam najnovší dev-cpp kompilátor ale nejde mi to skompilovať. Dostal som ku knihe aj CD s príkladmi ktoré je ale v CD-romke počítača ktorý mi nefunguje .
Pochybujem že je chyba v kóde, skôr v kompilátore ale neviem čo mám nastaviť aby to fungovalo.
Tu je ukážka:
Kód: #include <iostream>
using namespace std;
enum TYP { KON, PEGAS };
class Kon { public: void cvalat(){ cout << "Cvalam...\n"; } private: int jehovek; }; class Pegas : public Kon { public: virtual void lietat() { cout << "Dokazem lietat!\n"; } }; const int pocetkonov = 5; int main() { Kon * Ranc[pocetkonov]; Kon * pKon; int volba, i; for( i=0; i<pocetkonov; i++ ) { cout << "(1)Kon (2)Pegas: "; cin >> volba; if( volba == 2 ) pKon = new Pegas; else pKon = new Kon; Ranc[i] = pKon; } cout << "\n"; for( i=0; i<pocetkonov; i++) { Pegas *pPegas = dynamic_cast< Pegas *> (Ranc[i]); //tu je chyba if(pPegas) pPegas->lietat(); else cout << "Je to len kon\n"; delete Ranc[i]; } cin.get(); cin.get(); return 0; }
Píše to chybu:
riadok 38: cannot dynamic_cast `Ranc[i]' (of type `class Kon*') to type `class Pegas*' (source type is not polymorphic)
Prosím pomôže. Vďaka.
|
|
Registrovaný: 11.01.09 Prihlásený: 18.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 19.09.2010 13:32 | |
|
Tá chybová správa znamená, že dynamic_cast pretypuje len polymorfné tiedy, čiže triedy obsahujíce aspoň jednu virtuálnu metódu. Je to tak preto, lebo ide o dynamické pretypovanie, čiže dôjde k nemu až za behu, nie pri kompilácii. Takže pridaj kľučové slovíčko virtual pred funkciu cvalat():
Kód: virtual void cvalat(){ cout << "Cvalam...\n"; }
Ďalej musíš pridať parameter /GR v nastavení kompilátora, inak to môže hádzať chyby.
// btw, to CD nevieš z tej CD-ROM vybrať?
|
|
Registrovaný: 14.04.09 Prihlásený: 18.01.22 Príspevky: 1188 Témy: 198 | Napísal autor témy 1daemon1: 19.09.2010 14:48 | |
|
Moc ďakujem.
To CD je v CD-romke ale počítač nemôžem zapnúť totižto .
|
|
Registrovaný: 11.01.09 Prihlásený: 18.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 19.09.2010 15:01 | |
|
Niekde na tej mechanike by mala byť taká dierka. Keď tam dáš špendlík, tak sa otvorí a môžeš vybrať CD disk.
_________________ Ak potrebujete pomoc s diagnostikou/opravou vasej elektroniky ( notebook, motherboard, GPU, a ine ), kontaktujte ma cez SS. |
|
| Stránka: 1 z 1
| [ Príspevkov: 4 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|