Тренарный оператор.
От: Alex Serov Россия  
Дата: 01.02.02 07:51
Оценка:
Привет, если кто читал раздел численные методы в Страуструпе, то наверное видели пример оператора matr * vect1 + 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; }
---
Alex Serov
Re: Тренарный оператор.
От: Павел Кузнецов  
Дата: 01.02.02 08:13
Оценка: 9 (2)
AS>Привет, если кто читал раздел численные методы в Страуструпе, то наверное видели пример оператора matr * vect1 + vect2, через промежуточную структуру. Не занете ли вы, как сделать, чтобы operator*(matr, vector) который даёт MVmul, (а на самом деле должен быть как бы вектор), вел себя во всех случаях как вектор, и не приходилось бы постоянно делать приведение типа или переопределять операторы...

Маэстро может заинтересоваться следующим:
Techniques for Scientific C++
Blitz++
Pooma
Matrix Template Library
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Тренарный оператор.
От: Alex Serov Россия  
Дата: 02.02.02 20:43
Оценка:
Здравствуйте Павел Кузнецов,

огромное спасибо.
---
Alex Serov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.