[Résolu] Tableau d'objet

viki53 a marqué ce sujet comme résolu.

Bonjour,

Je veux coder un petit truc avec la librairie PID (pid). J’ai besoin de deux instances de l’objet PID. Pour éviter de la duplication de code, j’aimerai les coller dans un tableau:

PID my_pid[2];

Et là le compilateur se plaint que j’essaye d’appeler le constructeur (de ce que je comprends, désolé je débute)

J’avais déjà tenté le coup, avec succès, sur une autre librairie (hx711)

S’il vous plaît, si quelqu’un pouvait éclairer ma lanterne, parce qu’avec mes deux instances, il y en a partout c’est infernal, j’aimerai un peu ordonner tout ca.

Merci d’avance

+0 -0

Salut

Quand tu as une erreur, il faut donner les messages d’erreur complet. Ca aide pas mal a comprendre le problème et pouvoir t’aider.

A priori, la classe PID n’a pas de constructeur par défaut, c’est a dire un constructeur qui peut être appelé sans argument. Le compilateur ne sait pas comment initialiser tes 2 objets PID de ton tableau.

Tu peux directement passer les arguments dans un initilizer list. Un truc comme ca (code non testé) :

PID my_pid[2] = {
 { nullptr, nullptr, nullptr, 0.0, 0.0, 0.0, 0, 0 }, // arguments du premier object
 { nullptr, nullptr, nullptr, 0.0, 0.0, 0.0, 0, 0 }  // arguments du second object
};
+0 -0

Merci beaucoup ce code compile.

Edit lundi 3 juin

Merci beaucoup ce code marche sur le système réel

 #include "src/PID/PID_v1.h"
 
 //Define Variables we'll be connecting to
 double Setpoint, Input, Output;
  
 PID myPID[1] = {
                 {&Input, &Output, &Setpoint, 0.0, 0.0, 0.0, DIRECT}
                };

void setup(void) {}
void loop(void) {}
            

Je n’ai pas de méthodes pour donner à la classe les références, donc je ne peut pas passer par des pointeurs nuls. Pour le reste il y a des méthodes, je peux donc mettre à zéro.

Merci pour l’explication. Me reste a arranger ca et à bâtir le nouveau système.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte