Probleme fonction et tableau d'objet

Probleme fonction et tableau d'objet - C++ - Programmation

Marsh Posté le 02-11-2004 à 10:53:27    

Bonjour j'ai un petit probleme
 
j'ai uen classe

Code :
  1. #include"element.h"
  2. #define max 100
  3. class Matrice{
  4.     private:    int nbElem, tailMat;
  5.                 Element tab[max];
  6.                    
  7.     public:     //int getMax();      void setMax(int m);
  8.                 int getNbElem();   void setNbElem(int nb);
  9.                 int getTailMat();  void setTailMat(int taille);
  10.                 Element *getTab();  void setTab(Element tableau[]);
  11.                 Matrice();
  12.                 Matrice(int nb, int tail, Element *tableau);
  13. };


 
voila la fonction setTab a laquelle je fournis un tableau d'Element

Code :
  1. void Matrice::setTab(Element *tableau){
  2. tab=tableau;
  3. }


 
quand je compile avec g++ -c matrice.cc ma  premiere erreur est la suivante :
 
matrice.cc: Dans member function « void Matrice::setTab(Element*) »:
matrice.cc:24: error: incompatible types in assignment of `Element*' to Element[100]'
 
Pourtant les 2 sont des tableaux d'Element....
 
EDIT: Le tableau d'élément fourni en parametre est defini et rempli ailleurs
 
Je ne comprends pas pourquoi ca ne marche pas...
 
Merci de votre aide et de vos suggestions.


Message édité par pinpoy le 02-11-2004 à 11:01:53
Reply

Marsh Posté le 02-11-2004 à 10:53:27   

Reply

Marsh Posté le 02-11-2004 à 11:05:10    

Citation :

un tableau t est :
- une collection de taille statique N d'éléments de même type T
- ces éléments sont contigus en mémoire. Les adresses des éléments sont ordonnées dans l'ordre croissant.
- sizeof t == sizeof(T) * N
- chaque élément de t est accessible directement (en temps constant) par l'opérateur []. les éléments sont indicés sur [0; N[
- un tableau n'est pas un pointeur. la conversion est assurée de telle manière que t -> &t[0]
- ce n'est pas une l-value
- chaque couple (T, N) construit un nouveau type de tableau.

Reply

Marsh Posté le 02-11-2004 à 11:05:23    

Elle est censée faire quoi la fonction setTab ?

Reply

Marsh Posté le 02-11-2004 à 18:12:53    

elle est censé metre un tableau d'élément fourni en parametre dans le tableau de l'objet matrice
 
objet matrice créé auparavant avec le constructeur par defaut.

Reply

Marsh Posté le 02-11-2004 à 19:33:56    

template<size_t N>
void Matrice::setTab(Element tableau[N])
{
 // ici memcpy surement
}

Reply

Marsh Posté le 02-11-2004 à 19:43:49    

il est pas prêt pour ça Joël, il fait pas la différence entre pointeur et tableau

Reply

Marsh Posté le 02-11-2004 à 19:46:54    

Taz a écrit :

il est pas prêt pour ça Joël, il fait pas la différence entre pointeur et tableau


 
bah forcement :|
(et je me susi retenu de faire d ela pub pr FML ou TVMET)


Message édité par Joel F le 02-11-2004 à 19:55:26
Reply

Marsh Posté le 02-11-2004 à 20:25:13    

pinpoy a écrit :

elle est censé metre un tableau d'élément fourni en parametre dans le tableau de l'objet matrice
 
objet matrice créé auparavant avec le constructeur par defaut.


Non, elle est censée copier le contenu d'un tableau. Il te faut donc copier chaque élément un par un. En utilisant memcpy, ou en utilisant une boucle.  
Plus tard, pour ce genre de besoins, tu utiliseras les classes de la STL (comme vector par exemple), pour te simplifier la tâche et rendre les choses plus raisonnables. Et pour les matrices, il existe des milliers de libs plus ou moins efficaces.
 

Reply

Marsh Posté le 02-11-2004 à 20:35:56    

merci de ta réponse Lam's
 
je vais donc les faire 1 par 1
 
je penser que ca pouvait passer avec ma maniere
 
une fois le prog fini je decortiquerai les reponses (bizares mais surement juste) faites plus haut mais qui m'avancent pas franchement pour l'instant  :sarcastic:  
 
parce que dire non il est pas pret c'est un peu péjoratif....
 
Je vous tiens au courant et merci de votre participation

Reply

Sujets relatifs:

Leave a Replay

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