eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingENUM i sizeofRe: ENUM i sizeof
  • Data: 2009-05-24 00:24:53
    Temat: Re: ENUM i sizeof
    Od: Mateusz Loskot <s...@s...net> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    Freddie28 wrote:
    > Witam.
    >
    > Mam pytanie związanie z definiowaniem enum-ów w C++. Domyślnym rozmiarem
    > (sizeof) elementu enum-a jest int. Chcę zmienić ten rozmiar na 1 bajt. W MS
    > VC++ zapisuje się to jako:
    >
    > enum ABC : BYTE
    > {
    > VAL_1 = 0,
    > VAL_2 = 1
    > };
    >
    > Czy są jakieś inne możliwości zdefiniowania rozmiaru (sizeof) elementu
    > enum-a? Chodzi mi o inną formę zapisu (zdefiniowania enum-a).

    Możesz rozwiązać to prostym szablonem, przenośnie:

    #include <cassert>
    #include <iostream>
    using namespace std;

    enum Color { red = 2, green = 4, blue = 8 };

    template <class Enum, class Target>
    struct Enumeration
    {
    Enumeration() : e_(Enum()) {}
    Enumeration(Enum e) : e_(static_cast<Target>(e)) {}
    operator Enum() const { return static_cast<Enum>(e_); }
    private:
    Target e_;
    };

    void print(Color color)
    {
    cout << "color = " << color << endl;
    }

    int main()
    {
    Enumeration<Color, char> color(red);
    assert(sizeof(color) == sizeof(char));
    print(color);

    return 0;
    }

    Pozdrawiam
    --
    Mateusz Loskot, http://mateusz.loskot.net
    Charter Member of OSGeo, http://osgeo.org

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: