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 11:33 | Nová verze

    Homebrew, správce balíčků nejen pro macOS, byl vydán ve verzi 6.0.0 (seznam změn). Hlavními novinkami jsou bezpečnostní mechanismus tap trust kvůli důvěryhodnosti závislostí, vylepšení sandboxingu na Linuxu, interní JSON API nebo zlepšení výkonu.

    |🇵🇸 | Komentářů: 0
    dnes 03:33 | Bezpečnostní upozornění

    Byla nalezena a 9. června opravena kritická zranitelnost ve FreeBSD v Kernel TLS (KTLS). Pojmenována byla Bumsrakete (FreeBSD-SA-26:26.ktls, CVE-2026-45257). Lokální neprivilegovaný uživatel může přepisovat soubory, ke kterým má právo pouze pro čtení. Přepsáním setuid binárky a jejím spuštěním může získat roota. Na všech verzích od verze 13.0 vydané v dubnu 2021.

    Ladislav Hagara | Komentářů: 2
    včera 14:11 | Komunita

    Vývojáři open source operačního systému ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, se na síti 𝕏 pochlubili, že ReactOS zvládne počítačovou hru Half-Life.

    Ladislav Hagara | Komentářů: 3
    včera 10:44 | Nová verze

    Byla vydána nová verze 4.8 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 0
    včera 04:44 | Nová verze

    Apple container dospěl do verze 1.0.0. Jedná se o open source nástroj pro spouštění linuxových kontejnerů na macOS postavený nad containerization. Napsaný je v programovacím jazyce Swift a optimalizovaný pro Apple silicon.

    Ladislav Hagara | Komentářů: 5
    včera 03:33 | Nová verze

    Bylo vydáno Eclipse IDE 2026-06 aneb Eclipse 4.40. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    10.6. 15:44 | Zajímavý software

    Asterinas (GitHub) je v Rustu napsané jádro operačního systému poskytující s jádrem Linux kompatibilní ABI. Vydána byla verze 0.18.0. První distribucí postavenou nad jádrem Asterinas je Asterinas NixOS. Nejedná se o oficiální projekt NixOS a nemá nic společného s NixOS Foundation.

    Ladislav Hagara | Komentářů: 1
    10.6. 13:22 | Zajímavý článek

    Podrobně byla rozebrána kritická zranitelnost v nf_tables (CVE-2026-23111). Další lokální eskalace práv na Linuxu. V upstreamu byla zranitelnost již v únoru opravena. Ve zdrojovém kódu stačilo odstranit 1 vykřičník.

    Ladislav Hagara | Komentářů: 1
    10.6. 12:11 | Nová verze

    Evropská komise (EK) nařídila americké společnosti Meta, že musí znovu umožnit bezplatný přístup konkurenčním obecně zaměřeným asistentům umělé inteligence (AI) k WhatsAppu a tento přístup musí zachovat až do ukončení antimonopolního šetření. Opatření je dočasné a má zabránit vážnému a nevratnému poškození konkurence na rychle rostoucím trhu s obecnými AI asistenty. Meta uvedla, že se proti rozhodnutí odvolá.

    Ladislav Hagara | Komentářů: 20
    10.6. 11:44 | IT novinky

    Společnost Anthropic představila AI modely Claude Fable 5 a Claude Mythos 5. Claude Fable 5 je první model třídy Mythos určený pro běžné použití.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (8%)
     (2%)
     (15%)
     (31%)
     (3%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1884 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Statická inicializace pole struktur v C++

    10.2.2023 09:53 pou | skóre: 18
    Statická inicializace pole struktur v C++
    Přečteno: 927×
    Dobrý den,

    Dejme tomu že mám tuto třídu v C++

    class TEST{
    
    public:
      TEST();
       typedef struct {
            int a;
       }ITEM;
    
    const ITEM items[];
    
    };
    
    Nyní bych chtěl v konstruktoru třídy TEST() naplnit pole items. Plánuji potom zdědit tuto třídu (TEST) a každý potomek si vytvoří svoje pole items.

    Jak na to? Použití std::vector nebo array atd není možné (embeddded).

    Jediná pro mě zatím funkční varianta je mít takovýto konstruktor:
    TEST(){
        ITEM asfafafsfff[]={
            {4},{5}
        };
        itms=asfafafsfff;
    }
    
    Ale vůbec se mi to nelíbí. Navíc items nemůže být const a busí být definován jako ITEM * items.

    Odpovědi

    10.2.2023 09:57 X
    Rozbalit Rozbalit vše Re: Statická inicializace pole struktur v C++
    Domaci ukol?
    10.2.2023 21:53 pou | skóre: 18
    Rozbalit Rozbalit vše Re: Statická inicializace pole struktur v C++
    Ne, ale díky za odpověď
    10.2.2023 16:07 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Statická inicializace pole struktur v C++

    To je jakýsi podivný mix C++ (class), C (typedef struct) a kdoví, možná i Javy (items[]), ale nejspíš to má být „nekonečné“ pole na konci C99 struktury, které ovšem není ani vzdáleně kompatibilní s C++ (bez přetěžování new a delete), protože samo od sebe není jasné, jak tam mají fungovat konstruktory a destruktory…

    Použití std::vector nebo array atd není možné (embeddded).

    V jakém slova smyslu to není možné? To ten embedded systém nemá alokátor paměti? std::array bude fungovat bez dynamické alokace, přesně k takovému použití je určené…

    Kdo / co určuje velikost pole items? Je k tomu přetížený operátor new a delete? Jak vypadá?

    Ten každý potomek má být ve skutečnosti každá podtřída nebo každá instance? Nebylo by v prvním případě lepší mít to pole statické? (Ať tak nebo tak, asi by mělo být protected a/nebo const.)

    #include <array>
    #include <cstdint>
    #include <utility>
    
    namespace {
    
    template <std::size_t Size>
    struct Test1 {
      struct Item {
        int a;
      };
    
      template <typename... ALike>
      Test1(ALike&&... as) : items_{{.a = std::forward<ALike>(as)}...} {
        static_assert(sizeof...(as) <= Size);
      }
    
     protected:
      const Item items_[Size];
    };
    
    template <std::size_t Size>
    struct Test2 {
      struct Item {
        int a;
      };
    
      template <typename... ALike>
      Test2(ALike&&... as) : items_{Item{.a = std::forward<ALike>(as)}...} {
        static_assert(sizeof...(as) <= Size);
      }
    
     protected:
      const std::array<Item, Size> items_;
    };
    
    }  // namespace
    
    int main() {
      Test1<6> t{1, 2, 3, 4, 5};
      Test2<5>{1, 2, 3, 4};
    }
    
    10.2.2023 22:02 pou | skóre: 18
    Rozbalit Rozbalit vše Re: Statická inicializace pole struktur v C++
    Dobrý den, díky za odpověď.

    Máte pravdu std::array použít můžu - kompilátor to zkompiluje.

    Asi jsem to použil nešťastně (mix C/C++) - proto se rád nechám poučit.

    Nejlépe asi napsat čeho chci dosáhnout:

    Snažím se vytvořit třídu, která na displej vykresluje menu. Položky v menu budou právě v tom seznamu - tedy každá podtřída bude mít svůj set položek. Instance dané podtřídy již seznam měnit nebude (může tedy být konstantní).

    No a celá moje snaha je, aby to bylo přehledně napsané (tedy v konstruktoru jednodušše naplním toto pole) a nejlépe konstantní tak aby se vše uložilo do paměti programu a ne do RAM paměti (položky totiž budou obsahovat text ale i obrázky-ikony).

    Díky
    15.2.2023 14:01 luky
    Rozbalit Rozbalit vše Re: Statická inicializace pole struktur v C++
    To nejde, protoze vnorene pole ve strukturalnim typu musi mit v C++ znamou velikost v dobe prekladu. Musite zadat velikost nebo pouzit ukazatel a pole mit jinde.

    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.