[Risolto] Problema con return da libreria mia

Ciao a tutti, ho fatto un programmino per Leonardo ed avendo vari void e funzioni che vengono richiamati spesso ho pensato di creare una mia libreria per rendere il tutto più leggibile, mi sono letto un po di articoli in rete ed ho fatto i vari void e funzionano, non riesco però a fare le funzioni, ne ho una per arrotondare i decimali di un float e l'ho scritta così:

file Lib4Dnc.h

#ifndef Lib4Dnc_h
#define Lib4Dnc_h
#include "Arduino.h"

class L4Dnc{ 

   public:
      L4Dnc();
      int RoundInt(float Valore);
            
   private:
      
};

#endif

file Lib4Dnc.cpp

#include "Arduino.h"//Include la libreria Arduino fondamentale per la corretta comunicazione
#include "Lib4Dnc.h"//Include la libreria Lib4Dnc

L4Dnc::L4Dnc(){//Ridefinizione della classe
}

//FUNCTION ROUND
int L4Dnc::RoundInt(float Valore){
  int Delta = 0;      //Dimensionamento e reset iniziale della restituzione
  long AppL = Valore; //Estraggo la parte intera
  if (abs(Valore) > abs(AppL) + 0.5){ //Se il decimale è >.5
    if (Valore > 0){  //Se il valore di è positivo
      Delta = 1 ;     //Rendo 1
    }else{            //Se il valore di è negativo
      Delta = - 1 ;   //Rendo -1
    }
  }
  return Delta;
}
//****************************************

probabilmente è un errore banale ma non ne esco, qualcuno mi saprebbe dire dove sbaglio?

Se non metti tutto il codice non si può provare. Ad una prima occhiata sembra giusta. Qual'è il problema? Non compila?

forse ho trovato il problema mi diceva che non trovava Valore, ho modificato così:

#ifndef Lib4Dnc_h
#define Lib4Dnc_h
#include "Arduino.h"

class L4Dnc{ 

   public:
      L4Dnc();
      int RoundInt(float Valore);
            
   private:
      float Valore;

};

#endif

ed ora va, domanda le variabili che fornisco alla funzione devo per forza dichiararle?

Assolutamente no. Posta il codice completo, secondo me l'errore è altrove.

Ma che versione IDE usi ? A me, mettendo tutto insieme in unico sketch compila:

#ifndef Lib4Dnc_h
#define Lib4Dnc_h
#include "Arduino.h"
class L4Dnc{ 
   public:
      L4Dnc();
      int RoundInt(float Valore);          
   private:
};
#endif

//#include "Arduino.h"//Include la libreria Arduino fondamentale per la corretta comunicazione
//#include "Lib4Dnc.h"//Include la libreria Lib4Dnc

L4Dnc::L4Dnc(){}

int L4Dnc::RoundInt(float Valore){
  int Delta = 0;      //Dimensionamento e reset iniziale della restituzione
  long AppL = Valore; //Estraggo la parte intera
  if (abs(Valore) > abs(AppL) + 0.5){ //Se il decimale è >.5
    if (Valore > 0){  //Se il valore di è positivo
      Delta = 1 ;     //Rendo 1
    }else{            //Se il valore di è negativo
      Delta = - 1 ;   //Rendo -1
    }
  }
  return Delta;
}

L4Dnc pippo;

void setup()
{ int x=pippo.RoundInt(12.3); }
void loop()
{}

Non so che dirti, ora ho tolto la dichiarazione dall'elenco private e funziona :cold_sweat: lo metto come risolto anche se non ho capito cosa sbagliavo.

grazie comunque per l'interessamento