Metoda - zwracanie wartosci
Ostatnio zmodyfikowano 2015-03-22 19:44
dek12 Temat założony przez niniejszego użytkownika |
Metoda - zwracanie wartosci » 2015-03-22 19:38:23 Cześć, mam takie pytanko, robię klasę obsługującą macierze i taką mam małą zagwozdkę. double liczWyznacznik() { if( N != M ) { return 0; } else if( N == M ) { return wyznacznik; } }
i w innym miejscu wywoluje cout << macierz.liczWyznacznik();
jak w takim przypadku pozbyć się tego, żeby nie wypisywał tego 0 zwróconego przez metodę. Jak zaprojektować klasę aby w przypadku macierzy niekwadratowej nie przekazywalo żadnej wartości do innych części kodu? Wiem, że mogę dać if( liczWyznacznik() ) cout...
ale jako można to rozwiązać w samej klasie? |
|
pekfos |
» 2015-03-22 19:44:25 Możesz zapisać do zmiennej i sprawdzać wartość, przed zrobieniem czegoś z nią. Ale i z kwadratowej macierzy możesz uzyskać zerowy wyznacznik, więc to słabe rozwiązanie. Lepiej mieć klasę (pochodną?) tylko do macierzy kwadratowych i tam udostępniać liczenie wyznacznika, lub mieć klasę do macierzy w ogóle i wyrzucać wyjątek (lub asercję) przy próbie obliczenia wyników niemożliwych operacji (i mieć dodatkową metodę do wcześniejszego sprawdzenia, czy macierz jest kwadratowa). |
|
« 1 » |