Zwracanie przez funkcje w przypadku bledu

0

Dobry Wieczór. Zastanawiam się nad tym co taki operator powinien zwrócić kiedy wymiary nie są zgodne ?

    Macierz operator+(Macierz m)
    {
        if(SprawdzCzyTeSameWymiary(*this,m))
        {
            Macierz wynik(w,k);
            for(int i=0; i<w; i++)
                for(int j=0; j<k; j++)
                    wynik.tab[i][j] = tab[i][j] + m[i][j];

            return wynik;
        }
        else
        {
             cerr < "Niezgodne Wymiary!\n";
             return ?????????
        }
    }
0

Przecież nigdzie nie jest powiedziane co trzeba wtedy zwrócić. Możesz sobie zwrócić co chcesz bylebyś wiedział, że ta wartość została zwrócona na skutek błędu.

2

Rzuć wyjątek.

0

był nie tak dawno temat na forum, co jeśli będziesz zwracał w taki sposób sygnalizacje o błędzie. http://4programmers.net/Forum/1147143, gdzie masz dwa inne wyjścia z takiej sytuacji (ja polecam ten drugi i się nie męczyć).

1

Rzuć wyjątek / zwracaj typ boost::optional<Macierz> albo inny o podobnej funkcjonalności.

Polecam lekturę: https://akrzemi1.wordpress.com/2012/06/19/beware-of-magic-values/

0

na template'ach można zrobić, że źle dobrane rozmiary nie będą się nawet kompilować, i to byłoby lepsze niż wyjątek.

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