alexserov |
опубликован 01-02-2002 05:29 MSK
Я увидел ваше обсуждение оператора matr* vect + vect2, через промежуточную структуру. Не занете ли вы, как сделать, чтобы operator*(matr, vector) который даёт MVmul, а на самом деле вектор, вел себя во всех случаях как вектор, и не приходилось бы постоянно делать приведение типа или переопределять операторы...Пример: struct MVmul { const Matrix& m; const Vector& v; MVmul (const Matrix& mm, const Vector& vv): m(mm), v(vv){} operator Vector() const; // Calculate and return result}; // struct VCmul inline MVmul operator* (const Matrix& m, const Vector& v){return MVmul(m, v);} Переопределённые операторы: inline Vector operator+(const MVmul & srcvmm, const Vector srcv){ return Vector(srcvmm) + srcv; }
|
Valery
|
опубликован 01-02-2002 08:06 MSK
обратись к автору исходного сообщения, мы с ним переписывались, у него заработало вроде все. А что касается промежуточного типа MVmul, про который ты говоришь, то он вводится лишь для пущей эффективновсти, а так если не хочешь возиться с лишними типами, преобразованиями и т.п. - ничего не мешает, забей на них и просто аккуратно перегрузи все операции. |