probleme d'assignation de valeur avec un tableau dans une classe

probleme d'assignation de valeur avec un tableau dans une classe - C++ - Programmation

Marsh Posté le 31-03-2010 à 13:44:48    

Bonjour, je debut en c++ et j'ai un petit souci.
Voila j'ai une méthode qui tente de récupérer la valeur d'un tableau, qui est lui, declaré dans une classe.
L'ennui c'est qu'a la compilation j'ai une erreur
 
Voici en gros ma classe
 
class maclasse {
 private :
 typedef struct {
  char valeur1[5];
  char valeur2[5];
 } type_maclasse;
 
 type_maclasse montab[46][2];
 
 public :
 maclasse(void);  
 ~maclasse(void);  
 int get_param(int param1, int param2);
};
 
 
Et voici le code de la méthode
 
int maclasse::get_param(int param1, int param2)
{
 char value1[5];
 value1 = montab[param1][param2].value1;      // Ligne qui pose probleme
 return 0;
}
 
Pour le moment j'en suis la et j'obtient ce message sur la ligne : "error: invalid array assignment"
 
Ma syntaxe ne doit pas etre correcte mais la j'ai beau chercher des exemples sur le net je ne vois pas ce qui cloche.
Si quelqu'un a une idée, je suis preneur.
Merci ;)

Reply

Marsh Posté le 31-03-2010 à 13:44:48   

Reply

Marsh Posté le 31-03-2010 à 13:52:04    

C'est plus une question C que C++, ici.
Ta question se résume à ce code tout simple :

Code :
  1. char foo[5];
  2. char bar[5] = "bar";
  3. foo = bar;   // <= Erreur de compilation : left operand must be modifiable lvalue: op "="
 

"tableau1 = tableau2" ne fait pas ce que tu crois, tableau1 n'est pas une lvalue (i.e. n'est pas "assignable" ).

 

C'est le contenu du tableau qu'il faut recopier, et non le tableau lui-même.
Utilise strcpy() ou, mieux, snprintf().


Message édité par Elmoricq le 31-03-2010 à 13:54:12
Reply

Marsh Posté le 31-03-2010 à 16:17:31    

j'ai essayé avec strcpy( value1, montab[param1][param2].value1);
Et la ça passe nickel a la compilation.  
Merci beaucoup pour ton aide ;)

Reply

Marsh Posté le 31-03-2010 à 17:09:18    

tr1::array et boost::array permettent d'avoir des tableaux en lvalue.

Reply

Sujets relatifs:

Leave a Replay

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