typ wyliczeniowy

0

Witam. Mam pytanie odnosnie typu wyliczeniowego. Zalozmy ze w mamy taka klase:

class X
{
private:
enum {X = 20};
...
public:
X(int n);
...
};

teraz rodzi sie pytanie, czy X mozna zainicjowac wartoscia n podana w konstruktorze?

0

nie da się bo X to nie jest obiekt tylko jakaś stała umieszczona na liście wyliczeniowej. Twój typ wyliczeniowy powinien mieć konkretną nazwę aby stworzyć obiekt tego typu i przypisać mu jakąś wartość ze listy wyliczeniowej.

0

rozumiem, dzieki za odpowiedz :)

0

Natomiast da się go zainicjować wartością która znajduje się na liście typu wyliczeniowego.
Mając


enum jakisTyp 
{
X = 20, 
Y,
Z = 35
}
class X 
 {
    private: 
      jakisTyp zmienna ;
      ...
    public:
      X(int n);
      ...
 }; 

to możesz do konstruktora przekazać wartość 20, 21 lub 35 i przypisać ją do zmiennej zmienna jako zmienna = static_cast<jakisTyp>(n). Jednak zasadniczo - po co? Skoro tworzysz se typ wyliczeniowy to ma Ci to coś ułatwić zamiast posługiwać się magicznymi liczbami więc dostosuj do tego swój konstruktor i pobieraj do niego nie typ int a typ jakisTyp.

1 użytkowników online, w tym zalogowanych: 0, gości: 1