1246
Débuter / Re : Tableaux et objet : création en fonction d'un paramètre
« le: mai 27, 2015, 01:51:52 pm »
Tu ne peux pas déclarer statiquement un tableau dont la taille est inconnue. Il faut l'allouer dynamiquement. En C++ on utilise new
Au lieu d'avoir :
Déclare plutôt
tEssai étant alors un pointeur vers un byte. note que cette variable membre ne peut pas avoir le même nom qu'une méthode (le constructeur)
Dans ton constructeur, tu l'alloues avant de l'initialiser
Le sketch complet :
Normalement il devrait y avoir une libération de la mémoire via delete ( delete tEssai[]; ) dans le destructeur.
Au lieu d'avoir :
Code: [Sélectionner]
byte essai[n];
Déclare plutôt
Code: [Sélectionner]
byte *tEssai;
tEssai étant alors un pointeur vers un byte. note que cette variable membre ne peut pas avoir le même nom qu'une méthode (le constructeur)
Dans ton constructeur, tu l'alloues avant de l'initialiser
Code: [Sélectionner]
essai::essai(byte j, byte valeur)
{
n = j;
tEssai = new byte[j];
for(byte i=0; i<n; i++) {
tEssai[i]=valeur;
}
}
Le sketch complet :
Code: [Sélectionner]
class essai
{
public:
essai(byte j=1, byte valeur=0);
void print();
private:
byte n;
byte *tEssai;
};
essai::essai(byte j, byte valeur)
{
n = j;
tEssai = new byte[j];
for(byte i=0; i<n; i++) {
tEssai[i]=valeur;
}
}
void essai::print()
{
for(byte i=0;i<n;i++)
{
Serial.println(n);
Serial.println(tEssai[i], DEC);
}
}
essai essai(2);
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
essai.print();
delay(5000);
}
Normalement il devrait y avoir une libération de la mémoire via delete ( delete tEssai[]; ) dans le destructeur.