Public Member Functions | |
Reference (const Accessor *accessor, const bool dummy) | |
operator number () const | |
const Reference & | operator= (const number n) const |
const Reference & | operator+= (const number n) const |
const Reference & | operator-= (const number n) const |
const Reference & | operator*= (const number n) const |
const Reference & | operator/= (const number n) const |
Private Attributes | |
const Accessor * | accessor |
The constructor takes a pointer to an accessor object that describes which element of the matrix it points to. This creates an ambiguity when one writes code like iterator->value()=0 (instead of iterator->value()=0.0), since the right hand side is an integer that can both be converted to a number
(i.e., most commonly a double) or to another object of type Reference
. The compiler then complains about not knowing which conversion to take.
For some reason, adding another overload operator=(int) doesn't seem to cure the problem. We avoid it, however, by adding a second, dummy argument to the Reference constructor, that is unused, but makes sure there is no second matching conversion sequence using a one-argument right hand side.
The testcase oliver_01 checks that this actually works as intended.
internals::SparseMatrixIterators::Accessor< number, false >::Reference::Reference | ( | const Accessor< number, false > * | accessor, | |
const bool | dummy | |||
) |
Constructor. For the second argument, see the general class documentation.
internals::SparseMatrixIterators::Accessor< number, false >::Reference::operator number | ( | ) | const |
Conversion operator to the data type of the matrix.
const Reference& internals::SparseMatrixIterators::Accessor< number, false >::Reference::operator= | ( | const number | n | ) | const |
Set the element of the matrix we presently point to to n
.
const Reference& internals::SparseMatrixIterators::Accessor< number, false >::Reference::operator+= | ( | const number | n | ) | const |
Add n
to the element of the matrix we presently point to.
const Reference& internals::SparseMatrixIterators::Accessor< number, false >::Reference::operator-= | ( | const number | n | ) | const |
Subtract n
from the element of the matrix we presently point to.
const Reference& internals::SparseMatrixIterators::Accessor< number, false >::Reference::operator*= | ( | const number | n | ) | const |
Multiply the element of the matrix we presently point to by n
.
const Reference& internals::SparseMatrixIterators::Accessor< number, false >::Reference::operator/= | ( | const number | n | ) | const |
Divide the element of the matrix we presently point to by n
.
const Accessor* internals::SparseMatrixIterators::Accessor< number, false >::Reference::accessor [private] |
Pointer to the accessor that denotes which element we presently point to.