eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › ENUM i sizeof
Ilość wypowiedzi w tym wątku: 2

  • 1. Data: 2009-05-23 23:09:45
    Temat: ENUM i sizeof
    Od: Freddie28 <f...@p...onet.pl>

    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).


  • 2. Data: 2009-05-24 00:24:53
    Temat: Re: ENUM i sizeof
    Od: Mateusz Loskot <s...@s...net>

    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

strony : [ 1 ]


Szukaj w grupach

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: