Wymuszanie wartości zmiennej

0

Witam,

moje pytanie jest następujące: czy jest sposób na wymuszenie podawanej wartości zmiennej? Chodzi o to, żeby wartości zmiennej int pobieranej przez funkcję była z przedziału liczb 2:8? Dzięki za odpowiedzi.

1

Co rozumiesz przez wymuszanie? Funkcja może sprawdzić, czy podany argument jest taki jak trzeba, jak nie to może rzucić wyjątkiem/błędem.

2

do tego co napisał @twonek ewentualnie można argumentem zrobic enuma, a tam wartości zdefiniować od 2 do 8

0

Wiem, że funkcja może sprawdzić. Właśnie interesuje mnie jak mogłoby to wyglądać np przy pomocy typu enum

3

Nijak.

enum foo { bar = 2, baz };

foo val = static_cast<foo>(1);

to w pełni legalny kod w c++

3

Wymuś oczekiwany argument assertem. Jeśli dostaniesz cokolwiek innego, to program wywoła abort() i powinieneś mieć ładny stacktrace do debugu.

5

Ew stwórz klasę, która w konstruktorze narzuci ograniczenia (nie pozwoli na przechowywanie niepoprawnego stanu) i jednocześnie będzie miała zdefiniowaną niejawną konwersję do liczby.

0

Chwilowo nie mam dostępu do komputera żeby przetestować wasze propozycje, ale myślę ze któraś na pewno się przyda. Dzięki za odpowiedzi.

0

Ale takie coś z użyciem enum już legalne nie jest: http://ideone.com/y5SaSx

2

Jest, tylko musisz zrzutować.

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