Une histoire d'operateur

Une histoire d'operateur - C++ - Programmation

Marsh Posté le 05-04-2010 à 01:34:07    

Bonjour a toutes et a tous,

 

J'ai un petit soucis avec un bout de mon programme:

 
Code :
  1. // Access methods to get the (i,j) element:
  2. T&       operator() (unsigned i, unsigned j);
  3. T const& operator() (unsigned i, unsigned j) const;
  4. [...]
  5. template<typename T>
  6. inline T& matrix<T>::operator() (unsigned row, unsigned col)
  7. {
  8.    if (row >= nbRows() || col >= nbCols()) throw BoundsViolation();
  9.    return data_[row][col];
  10. }
  11. [...]
  12. template<typename T>
  13. double matrix<T>::determinant()
  14. {
  15. // Use of the Doolittle algorithm with lower/upper tringular matrix to find the determinant
  16. unsigned iD, jD, kD, m_Rows, m_Cols;
  17. m_Rows = this -> nbRows();
  18. m_Cols = this -> nbCols();
  19. matrix<T> ldata_ (m_Cols,m_Rows); // Lower matrix
  20. matrix<T> udata_ (m_Cols,m_Rows); // Upper matrix
  21. for (iD = 0; iD < m_Cols; iD++)
  22. {
  23.  for (jD = 0; jD < m_Rows; jD++)
  24.  {
  25.   udata_(iD,jD) = this -> data_[iD][jD];
  26.   for (kD = 0; kD < iD - 1; kD++)
  27.   {
  28.    udata_(iD,jD) = udata_(iD,jD) - ldata_(iD,kD) * ldata_(kD,jD);
  29.   }
  30.  }
  31.         }


A la ligne 30, il y a ceci :

Code :
  1. udata_(iD,jD) = this -> data_[iD][jD];


Ce bout de code marche mais ce que j'aimerais faire, c'est utiliser mon operateur () que j'ai cree et qui marche parfaitement dans mon main, sous cette forme par exemple, que je trouve plus propre qu'un this -> data_[iD][jD]:

Code :
  1. for (iCol = 0; iCol < m_.nbCols(); iCol++)
  2. {
  3. m_(iCol,iRow) = iRow + iCol;
  4. }


Le probleme est qu'il n'a pas de comprendre mon operateur si je fais cela (je ne suis pas du tout sur si c'est la bonne syntaxe a la base) :

Code :
  1. udata_(iD,jD) = this(iD,jD);


Ai-je loupe quelque chose ?

 

Merci d'avance,
Alendar


Message édité par Profil supprimé le 05-04-2010 à 01:35:09
Reply

Marsh Posté le 05-04-2010 à 01:34:07   

Reply

Marsh Posté le 05-04-2010 à 08:48:45    

this est un pointeur, donc (*this)(iD, jD).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed