abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 22:00 | IT novinky

    Společnost OpenAI představila svůj nejnovější AI model GPT-4o (o jako omni, tj. vše). Nově také "vidí" a "slyší". Videoukázky na 𝕏 nebo YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 15:44 | Zajímavý článek

    Ondřej Filip publikoval reportáž z ceremonie podpisu kořenové zóny DNS. Zhlédnout lze také jeho nedávnou přednášku Jak se podepisuje kořenová zóna Internetu v rámci cyklu Fyzikální čtvrtky FEL ČVUT.

    Ladislav Hagara | Komentářů: 0
    včera 14:22 | IT novinky

    Společnost BenQ uvádí na trh novou řadu monitorů RD určenou pro programátory. První z nich je RD240Q.

    Ladislav Hagara | Komentářů: 8
    včera 13:00 | IT novinky

    Byl aktualizován seznam 500 nejvýkonnějších superpočítačů na světě TOP500. Nejvýkonnějším superpočítačem nadále zůstává Frontier od HPE (Cray) s výkonem 1,206 exaFLOPS. Druhá Aurora má oproti loňsku přibližně dvojnásobný počet jader a dvojnásobný výkon: 1,012 exaFLOPS. Novým počítačem v první desítce je na 6. místě Alps. Novým českým počítačem v TOP500 je na 112. místě C24 ve Škoda Auto v Mladé Boleslavi. Ostravská Karolina, GPU

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 10:11 | Nová verze

    GHC (Glasgow Haskell Compiler, Wikipedie), tj. překladač funkcionálního programovacího jazyka Haskell (Wikipedie), byl vydán ve verzi 9.10.1. Přehled novinek v poznámkách k vydání.

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

    Po 9 týdnech vývoje od vydání Linuxu 6.8 oznámil Linus Torvalds vydání Linuxu 6.9. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna. Později také na Linux Kernel Newbies.

    Ladislav Hagara | Komentářů: 2
    11.5. 18:22 | Nová verze

    Byla vydána verze 0.2.0 v Rustu napsaného frameworku Pingora pro vytváření rychlých, spolehlivých a programovatelných síťových systémů. Společnost Cloudflare jej letos v únoru uvolnila pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 0
    10.5. 19:11 | Nová verze

    Open source RDP (Remote Desktop Protocol) server xrdp (Wikipedie) byl vydán ve verzi 0.10.0. Z novinek je vypíchnuta podpora GFX (Graphic Pipeline Extension). Nová větev řeší také několik bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 16
    10.5. 04:11 | Nová verze

    Rocky Linux byl vydán v nové stabilní verzi 9.4. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    9.5. 22:22 | Bezpečnostní upozornění

    Dellu byla odcizena databáze zákazníků (jméno, adresa, seznam zakoupených produktů) [Customer Care, Bleeping Computer].

    Ladislav Hagara | Komentářů: 22
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (71%)
     (6%)
     (11%)
     (12%)
    Celkem 218 hlasů
     Komentářů: 15, poslední včera 21:33
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    11.10.2012 16:30 Delaunay | skóre: 17 | blog:
    Rozbalit Rozbalit vše Re: c++: zmena tridy za behu
    Dejme tomu ze mam 2 tridy - A a B. Obe dedi z tridy Base. Nepridavaji zadne promenne, jen predefinuji virtualni funkce.

    Program nacita data a vetsinou z nich chce vytvorit tridu B. Obcas ale A a problem je ze tuto informaci se dozvi az pozdeji.

    Kdyz se dozvi ze vlastne potrebuje A tak nechci aby musel alokovat novou pamet, ani aby musel zpetne menit pointery ktere uz ukazuji na B.
    Začalo to hezky, skoro jako v pohádce: Žily byly dvě sestry, jedna staříkova, druhá stařenčina ...

    ... ale zápletka na sebe nenechala dlouho čekat. Pokud program chce "většinou" vytvořit třídu B, ale někdy později ji chce vyměnit za A, tak najednou se po nás chce zajistit dynamické chování ve statickém světě dědičnosti tříd. Prostě z jezevčíka mávnutím kouzelné hůlky udělat dobrmana. Vždyť je to přeci také pes. Použití operátoru new s umístěním je ale stejné jako nahánění jezevčíka s chirurgickým skalpelem v ruce.

    Když se na to podívám z druhé strany, tak vlastně nepotřebuji předělávat jezevčíka na dobrmana, ale chci jen naučit psa kousat jako dobrman, aby mi nikdo nechodil po dvorku. Pokud nejsem psí zubař, tak mohu tedy skalpel s klidem zahodit :-).

    Na všechno mi stačí jedna hlavní třída a to případné "kousání" si zajistíme až podle situace.
    #include <iostream>
    
    enum StrategyType 
    {
        A,
        B
    };
    
    class Strategy
    {
        protected:
            std::string* x;
            int* y;
    
        public:
            void setOptions(std::string* _x, int* _y) { x = _x; y = _y; }
            virtual void doSomething() = 0;
    };
    
    class StrategyA : public Strategy
    {
        virtual void doSomething()
        {
            std::cout << "I am 'A'. x = " << *x << ", y = " << *y << std::endl;
        }
    };
    
    class StrategyB : public Strategy
    {
        virtual void doSomething()
        {
            std::cout << "I am 'B'. x = " << *x << ", y = " << *y << std::endl;
        }
    };
    
    class Base 
    {
        private:
            std::string x;
            int y;
            Strategy* strategy;
    
        public:
            Base(std::string x_, int y_): x(x_), y(y_), strategy(NULL) {}
            ~Base() { delete strategy; }
    
            void doSomething()
            {
                strategy->doSomething();
            }
    
            void setStrategy(StrategyType type) 
            {
                if (strategy)
                    delete strategy;
                if (type == A)
                    strategy = new StrategyA();
                else if (type == B)
                    strategy = new StrategyB();
                strategy->setOptions(&x, &y);
            }
    };
    
    int main()
    {
        Base base("life, universe and everything", 42);
        base.setStrategy(B);
        base.doSomething();
        // ...
        base.setStrategy(A);
        base.doSomething();
    
        return 0;
    }
    
    Oproti zadání je možné měnit strategie nejen z B na A, ale i zpět a navíc opakovaně.

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.