Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1741 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  surcharge de l'opérateur [][]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

surcharge de l'opérateur [][]

n°1682445
guepe
J'ai du noir sur la truffe ?
Posté le 06-02-2008 à 01:53:47  profilanswer
 

Apres avoir codé une multiplication matricielle (algorithme de strassen), je recommence en c++ et cherche à implémenter l'opérateur [][] (tableau à 2 dimansions)
Or, lorsque je déclare l'opérateur comme suit :

Code :
  1. erreur: declaration of «operator[]" as non-function


Donc je ne sais pas bien comment implémenter cet opérateur. J'ai implémenté l'opératuer [] simple, qui renvoie un pointeur sur un entier

Code :
  1. int *operator [] (const int ) const;


 
Mais cela ne me suffit pas, je souhaite acceder a un tableau en deux dimensions (à moins que quelque chose de GROS ne m'échappe, ce dont j'ai un peu le sentiment).
Svp, mes cours de c++ sont un peu lointains et mes recherches google infructueuses (suppression automatique des caracteres [ meme avec les doubles quotes..."
 
Merci !


---------------
Un blog qu'il est bien
mood
Publicité
Posté le 06-02-2008 à 01:53:47  profilanswer
 

n°1682452
Amonchakai
Posté le 06-02-2008 à 07:23:47  profilanswer
 

salut !
 
j'avoue ne pas bien comprendre ton problème. Ou pourquoi ta deuxième méthode avec l'opérateur [] retournant un pointeur ne te conviens pas...
 
Il est a noter que l'opérateur [][] en lui-même n'existe pas. Si tu veux implémenter quelque chose qui s'y apparente il faut passer par l'utilisation de classe proxy. L'idée c'est que tu implémente un opérateur [] qui retourne une autre classe (par exemple Ligne). Et pour cette classe tu réinplémente l'opérateur [].  
Ainsi quand tu fera inst[2][4], inst[2] retournera la 3e instance de Ligne et sur cette instance s'appliquera l'opérateur[4]
j'espère avoir été clair :d
 
Mais toujours est-il va te renseigner du côté des classe proxy. Je pense que tu y trouvera ton bonheur

n°1682524
Joel F
Real men use unique_ptr
Posté le 06-02-2008 à 09:12:47  profilanswer
 

un proxy ouais , même si la solution avec l'opérateur qui renvoit T* estr en général suffisante.
 
Sinon tu surcharge operator() avec 2 paramétres et voila

n°1682728
guepe
J'ai du noir sur la truffe ?
Posté le 06-02-2008 à 14:58:16  profilanswer
 

Ah merci, c'est déjà pas mal plus clair... Comme j'ai vraiment pas le temps, je vais implémenter cela avec une fonction get(i,j), ca marche aussi bien et puis ca ira plus vite à mettre en place !
 
Ce fut éducatif, merci beaucoup  :jap:


---------------
Un blog qu'il est bien

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  surcharge de l'opérateur [][]

 

Sujets relatifs
surcharge operateur <Probleme de surcharge d'opérateur et de fonction amies
surcharge de l'opérateur =Surcharge de l'opérateur = + Appel non souhaité à delete
Surcharge d'opérateur sur des structuressurcharge opérateur [ ]
Surcharge d'opérateursurcharge de l'operateur >>
Surcharge d'opérateur : comprend pas(résolu) surcharge operateur <<
Plus de sujets relatifs à : surcharge de l'opérateur [][]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR