Virtual metoda a soubor .h – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Virtual metoda a  soubor .h – C / C++ – Fórum – Programujte.comVirtual metoda a soubor .h – C / C++ – Fórum – Programujte.com

 

Jana24
~ Anonymní uživatel
6 příspěvků
27. 12. 2011   #1
-
0
-

Ahoj,

implementuje abstraktni metodu vypis ve tride Porazeny.cpp, ktera dědí z abstratrkni tridu Hrac, chtěla bych jí ale dát hlavičkového souboru Porazeny.h. Bohužel mi to křicí, že error: virtual outside class declaration. Nevíte prosím co s tím?

class Porazeny:public Hrac
{
public:

    Porazeny( int _pocetOdkrytychPoli,int _pocetSpravneVlajek,string _vysledek);
    virtual void vypis()const;
};

Já bych chtěla něco takového:

virtual void Porazeny::vypis()const
    {
        cout << "Zasahl jsi minu...GAME OVER"<<endl;
        cout<<jmeno<<endl;
        cout<<"Pocet odkrytych poli "<<pocetOdkrytychPoli<<endl;
        cout<<"Pocet spravne umistnenych vlajek: "<<pocetSpravneVlajek<<endl;
    }

Nahlásit jako SPAM
IP: 85.71.215.–
KIIV
~ Moderátor
+43
God of flame
27. 12. 2011   #2
-
0
-

venku uz to neni potreba... prekladac uz vi, ze to je virtualni metoda (nebo musi vedet predem)

Nahlásit jako SPAM
IP: 94.112.32.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Jana24
~ Anonymní uživatel
6 příspěvků
27. 12. 2011   #3
-
0
-

Dobře, ale toto taky nefunguje:

class Porazeny:public Hrac
{
public:

    Porazeny( int _pocetOdkrytychPoli,int _pocetSpravneVlajek,string _vysledek);
    virtual void vypis()const;
};
    void Porazeny:: vypis()const
    {
        cout << "Zasahl jsi minu...GAME OVER"<<endl;
        cout<<jmeno<<endl;
        cout<<"Pocet odkrytych poli "<<pocetOdkrytychPoli<<endl;
        cout<<"Pocet spravne umistnenych vlajek: "<<pocetSpravneVlajek<<endl;
    }

Říká to: multiple definition of Porazeny::vypis() const....

Nahlásit jako SPAM
IP: 85.71.215.–
ondra.holub+1
Stálý člen
27. 12. 2011   #4
-
0
-

#3 Jana24
Tak to hlásí asi z toho důvodu, že definice metody je v headeru, který se inkluduje do více souborů. Takže ta definice pak existuje vlastně vícekrát a překladači (nebo spíš linkeru) je už jedno, že je stejná.

Takže buď ji (tu definici metody) přesuň do nějakého cc souboru (nebo cpp, C, cxx - podle toho, co používáš) nebo pokud ji potřebuješ v headeru, tak před ni připiš inline.

Nahlásit jako SPAM
IP: 85.207.23.–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 28 hostů

Podobná vlákna

SOUBOR.BAT&gt;SOUBOR.EXE — založil wokena

Virtual PC — založil Decide

Virtual device — založil franta22

Ms Virtual PC 2007 — založil laco797

Alokace tříd s virtual — založil Tuqi

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý