Comportement de operator[] avec [][]

Comportement de operator[] avec [][] - C++ - Programmation

Marsh Posté le 22-09-2004 à 11:31:16    

bonjour,
 
Je fait une classe matrice, pour laquelle je voudrais utiliser la notation matrice[][]. Mais comment se comporte l'operator[] quand on appelle matrice[][]? matrice[a] est équivalent à matrice.operator[](a), à quoi est équivalent matrice[a][b]?
 
(je sais que je devrais utiliser STL ou boost, mais pour diverses raisons je veux le faire moi même).

Reply

Marsh Posté le 22-09-2004 à 11:31:16   

Reply

Marsh Posté le 22-09-2004 à 11:33:05    

cet opérateur n'existe pas. je te conseile d'utiliser operator()
 
si tu tiens vraiment à ta notation [][], il faut qu'operator[] renvoie quelque chose qui à son tour est muni d'opérator[]

Reply

Marsh Posté le 22-09-2004 à 11:37:58    

Pour compléter ce que dit Taz :
 

Code :
  1. Element Matrice:: operator()(int i,int j);


 
ou
 

Code :
  1. Ligne/Colonne Matrice:: operator[](int i);
  2. Element Ligne/Colenne:: operator[](intj);


 

Reply

Marsh Posté le 22-09-2004 à 11:39:20    

Taz a écrit :

cet opérateur n'existe pas. je te conseile d'utiliser operator()
 
si tu tiens vraiment à ta notation [][], il faut qu'operator[] renvoie quelque chose qui à son tour est muni d'opérator[]

operator[] existe, je l'ai utilisé pour une classe vector :D
 
ce qui me fait penser qu'il pourrait justement retourner un objet de ma classe vector. Je vais réfléchir à ça.

Reply

Marsh Posté le 22-09-2004 à 11:40:27    

:jap:
 
La première solution me semble sympa. Je vais voir ce qui marche le mieux.


Message édité par allen_shezar le 22-09-2004 à 11:41:28
Reply

Marsh Posté le 22-09-2004 à 21:13:42    

hors de operator()(i,j) point de salut le [][] est assez touchy à manipuler.

Reply

Marsh Posté le 23-09-2004 à 09:14:20    

ouaip, j'ai vu :D
finalement j'ai fait avec operator()(i,j), ca marche tip top.
merci tout l'monde :jap:

Reply

Sujets relatifs:

Leave a Replay

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