abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 00:11 | Nová verze

    Open source modální textový editor Helix, inspirovaný editory Vim, Neovim či Kakoune, byl vydán ve verzi 25.07. Přehled novinek se záznamy terminálových sezení v asciinema v oznámení na webu. Detailně v CHANGELOGu na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | IT novinky

    Americký výrobce čipů Nvidia získal od vlády prezidenta Donalda Trumpa souhlas s prodejem svých pokročilých počítačových čipů používaných k vývoji umělé inteligence (AI) H20 do Číny. Prodej těchto čipů speciálně upravených pro čínský trh by tak mohl být brzy obnoven, uvedla firma na svém blogu. Americká vláda zakázala prodej v dubnu, v době eskalace obchodního sporu mezi oběma zeměmi. Tehdy to zdůvodnila obavami, že by čipy mohla využívat čínská armáda.

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Nová verze

    3D software Blender byl vydán ve verzi 4.5 s prodlouženou podporou. Podrobnosti v poznámkách k vydání. Videopředstavení na YouTube.

    Ladislav Hagara | Komentářů: 0
    14.7. 22:22 | Komunita

    Open source webový aplikační framework Django slaví 20. narozeniny.

    Ladislav Hagara | Komentářů: 0
    14.7. 16:11 | Komunita

    V Brestu dnes začala konference vývojářů a uživatelů linuxové distribuce Debian DebConf25. Na programu je řada zajímavých přednášek. Sledovat je lze online.

    Ladislav Hagara | Komentářů: 0
    14.7. 11:33 | IT novinky

    Před 30 lety, tj. 14. července 1995, se začala používat přípona .mp3 pro soubory s hudbou komprimovanou pomocí MPEG-2 Audio Layer 3.

    Ladislav Hagara | Komentářů: 26
    14.7. 10:55 | IT novinky

    Výroba 8bitových domácích počítačů Commodore 64 byla ukončena v dubnu 1994. Po více než 30 letech byl představen nový oficiální Commodore 64 Ultimate (YouTube). S deskou postavenou na FPGA. Ve 3 edicích v ceně od 299 dolarů a plánovaným dodáním v říjnu a listopadu letošního roku.

    Ladislav Hagara | Komentářů: 20
    13.7. 17:55 | Zajímavý projekt

    Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.

    Ladislav Hagara | Komentářů: 17
    11.7. 16:44 | Komunita

    Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.

    Ladislav Hagara | Komentářů: 3
    11.7. 14:55 | Humor

    McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.

    Ladislav Hagara | Komentářů: 16
    Jaký je váš oblíbený skriptovací jazyk?
     (59%)
     (26%)
     (7%)
     (3%)
     (1%)
     (1%)
     (4%)
    Celkem 398 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    Rozcestník

    Dotaz: Dědění od std::vector

    31.3.2011 22:04 qiRzT | skóre: 14 | blog: U_Marvina
    Dědění od std::vector
    Přečteno: 322×
    Zdravím, na mnoha místech na webu jsem našel, že to není dobrý nápad, ale vzhledem k tomu, že to potřebuju jen proto, abych prozkoumal, jak se chová jedna knihovna, tak mi nějakí ta prasárna nevadí. Zkoušel jsem následující:
    template <class T> class mvect : public std::vector<T>
    {
     public:
      const std::vector<T>::const_iterator begin() const
      {
       return std::vector<T>::begin();
      }
    };
    
    Není mi jasné, proč se od překladače dozvím, že:
    vect.h:23: error: ISO C++ forbids declaration of 'const_iterator' with no type
    vect.h:23: error: expected ';' before 'begin'
    vect.h:29: error: expected `;' before '}' token
    
    const_iterator je přeci součást vectoru, ne?

    Uměl by mi to, prosím, někdo vysvětlit?

    Díky.
    Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...

    Řešení dotazu:


    Odpovědi

    Luboš Doležel (Doli) avatar 31.3.2011 22:23 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    Aniž bych si myslel, že je to ten problém, tak ten první const je tam navíc. const_iterator je sám o sobě konstantní.
    1.4.2011 13:10 Jirka P
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    To je nesmysl. Mezi "ptr to const" (aka const_iterator) a "const ptr to const" je rozdíl (ačkoli nechci předjímat, který z významů měl básník na mysli).
    1.4.2011 13:28 Sten
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    const_iterator je třída a zde se předává hodnotou (tj. jako rvalue), takže to const tam je skutečně zbytečné. Když zapnete „-Wextra“, tak vás na to GCC upozorní.
    1.4.2011 13:52 Jirka P
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    Jestli je tam const potřebné si netroufám tvrdit, sám nejsem zastáncem návratových typů s const, ale existují lidé, kteří je propagují a mají pro to své důvody. Každopádně má vliv na okolní program, takže zbytečné tam asi nebude. Dalo by se to formulovat jako hádanka (najděte dva programy, které se liší jen const-kvalifikací návratového typu jedné funkce a dávají různé výsledky, příp. jen jeden lze přeložit), ale to by bylo moc lehké.
    1.4.2011 14:36 Sten
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    U referencí a pointerů má const smysl, protože předáváte lvalue (u pointerů pouze pro cílový typ, samotný poitner je rvalue), u předání hodnotou (rvalue; to je i ten const_iterator) ne. Tolik ISO standard. Klidně si to můžete vyzkoušet, že následující příklad vypíše stejnou chybu u getTest i getTestConst (volání protected konstruktoru), i když by podle vás měl první projít:
    class Test
    {
    public:
        Test()
        {}
    
        Test(Test&)
        {}
    
    protected:
        Test(const Test&);
    }
    
    
    Test getTest()
    {
        return Test();
    }
    
    
    const Test getTestConst()
    {
        return Test();
    }
    
    
    void test()
    {
        Test t(getTest());
        Test t2(getTestConst());
    }
    Mimochodem C++2011 má taky rvalue jenom bez const (Test&&).
    1.4.2011 15:01 Jirka P
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    Ten váš příklad nedokazuje nic jiného, než že rvalue nelze použít tam, kde je očekávána lvalue, o const to neříká nic.

    Jinak pokud se oháníte ISO standardem, měl byste připojit citaci, kde konkrétně zapovídá const u rvalue, případně kde vůbec mluví o smyslu čehosi. Dále si laskavě vyřešte hádanku a nevkládejte jiným do úst, co neřekli.
    Řešení 1× (qiRzT (tazatel))
    31.3.2011 22:51 Sten
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    Prasárna to není, akorát tam potom chybně funguje použití předka místo potomka (včetně nevolání destruktoru potomka), takže na to musíte dávat pozor a řekl bych, že pro váš účel to fungovat nebude :-)

    Jinak vám tam chybí typename, protože jde o typ definovaný v šabloně:
    const typename std::vector<T>::const_iterator begin() const
    1.4.2011 09:39 qiRzT | skóre: 14 | blog: U_Marvina
    Rozbalit Rozbalit vše Re: Dědění od std::vector
    Díky :-) Pro můj účel to funguje, dělá to přesně to, co jsem chtěl - tj. můžu snadno sledovat, kdy se ta metoda volá.
    Důležité je vědět jak problém vyřešit, zbytek zvládne i cvičená opice...

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.