Re: class with two dimensional array as a member (I need help)
On May 13, 9:18 am, "Alf P. Steinbach" <al...@start.no> wrote:
* Pawel_Iks:
Just a couple of nits (and the correction of a typo), but...
<code>
class A
{
private:
size_t myN;
std::vector<int> myElements;
size_t indexFor( size_t i, size_t j ) const
{
return myN*i + j;
}
public:
A( size_t n ): myN( n ), myElements( n*n ) {}
int at( size_t i, size_t j ) const
{
return myElements.at( indexFor( i + j ) );
You certainly meant "indexFor( i, j )". As written, it won't
compile (and wouldn't do the right thing if it did).
Also, I very much question the wisdom of using at() here. If
there's an error in the indexing, you want an assertion failure,
not an exception. Which is what you'll get with any reasonable
implementation of std::vector<>::operator[]. But of course,
even that is only partially right, since something like 20, 0
will pass even if myN is 10. You really need to use assert in
indexFor, i.e.:
size_t indexFor( size_t i, size_t j ) const
{
assert( i < myN && j < myN ) ;
return myN*i + j;
}
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34