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.
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.
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.
do tego co napisał @twonek ewentualnie można argumentem zrobic enuma, a tam wartości zdefiniować od 2 do 8
Wiem, że funkcja może sprawdzić. Właśnie interesuje mnie jak mogłoby to wyglądać np przy pomocy typu enum
Nijak.
enum foo { bar = 2, baz };
foo val = static_cast<foo>(1);
to w pełni legalny kod w c++
Wymuś oczekiwany argument assertem. Jeśli dostaniesz cokolwiek innego, to program wywoła abort() i powinieneś mieć ładny stacktrace do debugu.
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.
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.
Ale takie coś z użyciem enum już legalne nie jest: http://ideone.com/y5SaSx
Jest, tylko musisz zrzutować.