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?
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?
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.
rozumiem, dzieki za odpowiedz :)
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.