Ragazzi non ho idea di cosa stia succedendo...
In pratica io ho una funzione che lavora su una matrice quadrata. Se la riga o la colonna sono più grandi della dimensione della matrice deve sollevare un'eccezione. Così:
codice:
square_matrix square_matrix::suppress(unsigned int row, unsigned int column) const
throw (out_of_bounds_exception)
{
cout << "Debug couts:" << endl;
cout << "In square_matrix::suppress(unsigned, unsigned)." << endl;
cout << "_dim = " << _dim << endl;
cout << "row = " << row << endl;
cout << "column = " << column << endl;
if ( (row >= _dim) || (column >= _dim) )
throw out_of_bounds_exception();
...
}
Quando la chiamo dal main, così:
codice:
try
{
square_matrix B = A.suppress(0,0);
B.print();
}
catch(out_of_bounds_exception& ex)
{
cerr << "out_of_bounds_exception raised." << endl;
}
Ottengo questo output meraviglioso:
codice:
Debug couts:
In square_matrix::suppress(unsigned, unsigned).
_dim = 3
row = 0
column = 0
out_of_bounds_exception raised.
Cioè, ora, io ero convinto che (0 < 3)... no? I numeri in gioco sono tutti unsigned.
Qualcuno ha idea di cosa stia succedendo?