Fix super-nasty bug in the declaration of the storage array of fixed-size matrices.

Also some simplifications.
This commit is contained in:
Benoit Jacob 2007-09-30 14:56:11 +00:00
parent 7d41ad9d90
commit 023773beaa
4 changed files with 7 additions and 13 deletions

View File

@ -48,7 +48,7 @@ template<typename Lhs, typename Rhs> class EiSum
EiSum(const EiSum& other)
: m_lhs(other.m_lhs), m_rhs(other.m_rhs) {}
EI_INHERIT_ASSIGNMENT_OPERATORS(EiSum)
private:
@ -194,8 +194,7 @@ template<typename OtherDerived>
Derived &
EiObject<Scalar, Derived>::operator+=(const EiObject<Scalar, OtherDerived>& other)
{
*this = *this + other;
return *static_cast<Derived*>(this);
return *this = *this + other;
}
template<typename Scalar, typename Derived>
@ -203,8 +202,7 @@ template<typename OtherDerived>
Derived &
EiObject<Scalar, Derived>::operator-=(const EiObject<Scalar, OtherDerived> &other)
{
*this = *this - other;
return *static_cast<Derived*>(this);
return *this = *this - other;
}
template<typename Scalar, typename Derived>
@ -212,8 +210,7 @@ template<typename OtherDerived>
Derived &
EiObject<Scalar, Derived>::operator*=(const EiObject<Scalar, OtherDerived> &other)
{
*this = *this * other;
return *static_cast<Derived*>(this);
return *this = *this * other;
}
#endif // EI_MATRIXOPS_H

View File

@ -48,7 +48,6 @@ template<typename MatrixType> class EiMatrixConstRef
return m_matrix._read(row, col);
}
protected:
const MatrixType& m_matrix;
};

View File

@ -32,7 +32,7 @@ template<typename Scalar,
class EiMatrixStorage
{
protected:
Scalar m_array[RowsAtCompileTime * RowsAtCompileTime];
Scalar m_array[RowsAtCompileTime * ColsAtCompileTime];
void resize(int rows, int cols)
{ assert(rows == RowsAtCompileTime && cols == ColsAtCompileTime); }

View File

@ -92,16 +92,14 @@ template<typename Scalar, typename Derived> \
Derived & \
EiObject<Scalar, Derived>::operator*=(const OtherScalar &other) \
{ \
*this = *this * other; \
return *static_cast<Derived*>(this); \
return *this = *this * other; \
} \
\
template<typename Scalar, typename Derived> \
Derived & \
EiObject<Scalar, Derived>::operator/=(const OtherScalar &other) \
{ \
*this = *this / other; \
return *static_cast<Derived*>(this); \
return *this = *this / other; \
}
EI_MAKE_SCALAR_OPS(int)