[Résolu} Problème de compilation avec pointeur

Bonjour à tous

Je viens vous solliciter de l'aide car je suis en train de tourner fol dingo :wink:

J'explique mon problème

Arduino V 1.6.8

j'ai créé 2 objets TIMER_1 et TIMER_2 instanciés de la même classe (DailyTimer)
dans mon corps de programme j'ai une fonction à qui je passe un des objets précités et qui à pour but d'afficher le contenu d'un attribut de cet objet

subMenuTimer(&TIMER_1); 

void subMenuTimer(DailyTimer *ptrDTimer)
{ 
LCD1.clear();
LCD1.setCursor(0,0);
LCD1.print(ptrDTimer->getGrowingStart());
       .......

et j'obtiens ce message d'erreur :

error: 'DailyTimer' was not declared in this scope
error: 'ptrDTimer' was not declared in this scope

J'ai bien entendu un #include <DailyTimer.h>
et la classe est instanciée correctement, c'est une librairie que j'ai crée et qui tourne parfaitement

Je vous avoue que je comprends pas pourquoi le compilateur m'envoie bouler

Si une âme charitable pouvait se pencher sur mon problème, merci

Cordialement.

postez tout votre code et toutes les erreurs (avec le No de ligne) - ça peut simplement venir d'une accolade manquante dans votre code...

appuyez sur ctrl-T pour indenter correctement et voir si tout ce qui s'ouvre se ferme au bon endroit () {} []

Et où sont installées les librairies?

Bonjour à vous 2 et merci pour vos interventions

Cela ne vient pas d'un problème d'accolade ou de positionnement de la librairie, quand je met le code problématique en rem, cela compile sans problème, je fais d'autre appel à ces objets et tout tourne,
c'est juste cette fonction qui ne passe pas à la compile pour une raison obscure.

Là je suis en train d'installer des versions supérieures à 1.6.8 pour voir si le problème persiste.

Si quelqu'un à une idée, je suis preneur.

Cordialement

on est toujours preneur de votre code et de la vraie erreur complète... le bout de code que vous avez posté ne montre rien

cf Snippets R Us!

J'ai l'IDE 1.6.7.

J'ai téléchargé les librairies nécessaires à votre programme. J'ai lancé leur exemple : pas de problème

J'ai ajouté votre fonction (dans laquelle je n'ai pas mis d’instructions) et son appel : pas de problème

Par contre si je mets l'instruction "getGrowingStart()" dans votre fonction, j'ai une erreur me disant que cette fonction n'existe pas ; ce qui est les cas.

Cordialement.

Pierre

re:

Si cela peut aider

l'appel de fonction

void gotoModifyProcessData(int menuSettingProcessSelected)
{
	switch (menuSettingProcessSelected) 
	{
	    case  1: subMenuTimer(&TIMER_1); break;
            case  2: subMenuTimer(&TIMER_2); break;
            //case  3:  ; break;
	
	}
}

et la fonction

void subMenuTimer(DailyTimer *ptrDTimer)
{	
	LCD1.clear();
	LCD1.setCursor(0,0);
	LCD1.print(ptrDTimer->getGrowingStart());
}

et l'erreur

GDW3.ino:14:19: error: variable or field 'subMenuTimer' declared void
GDW3/GDW3.ino:14:19: error: 'DailyTimer' was not declared in this scope
GDW3/GDW3.ino:14:32: error: 'ptrDTimer' was not declared in this scope

Cordialement

re:

@ Pierre : comment aurais-tu pu charger cette classe ? C'est une classe perso que j'ai écrite
il doit certainement exister une classe homonyme mais qui n'a rien à voir avec la mienne
Merci quand même pour ton intervention

getGrowingStart est une methode de la classe DailyTimer et qui fonctionne

Si je fais Serial.println(TIMER_1.getGrowingStart()); il n'y a aucun souci

Je le répete, c'est un problème de compilation, je suis à la base un programmeur ADA, et je sais qu'il y a moyen de faire des pré-déclaration pour informer le compilateur

Ne serait-ce pas une cause éventuelle de mon problème ?

Cordialement

DailyTimer

timelib

Maintenant, si vous écrivez vos propres procédures, il faut le dire et les inclure ou en donner le lien si vous voulez qu'on comprenne et qu'on vous aide.

Cordialement.

Pierre

pour être clair - vous n'utilisez pas cette librairie?

si vous ne voulez pas nous montrer tout votre code, pouvez vous écrire un petit programme tout bête qui met en lumière ce que vous avancez... on ne connait pas votre classe, on doit vous croire sur parole quand vous dites que tout se passe bien

Mais bon avant cela, je concentrerai mes efforts si j'étais vous non pas sur le pointeur mais sur la première erreur

GDW3.ino:14:19: error: variable or field 'subMenuTimer' declared void

Bonjour,

Il y a quand même une forte probabilité pour que cette erreur soit due à une des causes suggérée par J-M-L en #1

appuyez sur ctrl-T pour indenter correctement et voir si tout ce qui s'ouvre se ferme au bon endroit () {} []

Auxquelles j'ajouterais l'oubli d'un ;

Merci à tous

Problème résolu en compilant sous 1.8.4, je le sentais gros comme une maison

Cordialement

mouuuais... :o

Bonsoir

tu peux dire mouuuais... autant qu'il te plaira, cela ne change rien au fait.
Pour explication je travaillais sous sublime text 3 et j'avais chargé la version 1.6.8 depuis l'IDE ST3
Suite au problème de compil, j'ai également chargé depuis ST3 le core 1.6.9 et 1.6.20 mais toujours le même problème

Comme l'interface ST3 ne me proposait rien de supérieur à 1.6.20, j'ai fait une installation complète de l'IDE arduino 1.8.4
et la compilation depuis son IDE à fonctionné, je précise que j'étais sous la version ST3 antérieure à la 3.0 (Build 3143).

Voila pour l'histoire, si cela peut aider quelqu'un

Cordialement.