Errore su definizione classe quando compilo lo sketch

Buongiorno a tutti.
Sto cercando di definire una classe da usare su Arduino per utilizzare un oggetto encoder MORSE (gli passo un carattere e mi restituisce una codifica di punti e linee contenute in un vettore di interi)
Lo so che potrei tranquillamente usare una funzione senza scomodare le classi ma devo usare le classi per creare encoder e decoder...

Il file .h della classe è il seguente

#ifndef MORSE_h
#define MORSE_h

#include <Arduino.h>

class MORSE {
  private:
    int buzzerPin;
    int ledPin;
    boolean encodeStatus;
    boolean decodeStatus;
    boolean useLedStatus;
    boolean useBuzzerStatus;
    boolean useLocalTransmitter;
    boolean useSerialMonitor;
    boolean useWifiStatus;
    uint8_t codificaMorse[7];
    uint8_t carattereDecodificato;
    //boolean sendMorseChar (char c, boolean useLocal, boolean useSerial, boolean useWifi);
    boolean sendMorseChar (char c, boolean useLocal, boolean useSerial);
    boolean sendMorseChar (char c, boolean useLocal); 
    


  public:
    MORSE();
    MORSE(uint8_t buzzerPin);
    MORSE(uint8_t buzzerPin, uint8_t ledPin);
    MORSE(boolean encode);
    MORSE(boolean encode, uint8_t buzzerPin);
    MORSE(boolean encode, uint8_t buzzerPin, uint8_t ledPin);
    MORSE(boolean encode, boolean decode);
    MORSE(boolean encode, boolean decode, uint8_t buzzerPin);
    MORSE(boolean encode, boolean decode, uint8_t buzzerPin, uint8_t ledPin);
    boolean useSerial(boolean status);
    boolean useLocal(boolean status);
    //boolean useWifi(boolean status);

    uint8_t * encode (char c);
    char decode (uint8_t * encodedMorseChar);
    boolean sendMorseChar (char c);
};
#endif

Questo invece è il file .cpp

#include "MORSE.h"

MORSE::MORSE(){...}
.....

MORSE::useSerial(boolean status){
  if (status) {
    Serial.begin(9600);
    if (Serial){
      this->useSerialMonitor=true;
      return true;
    } else {
      this->useSerialMonitor=false;
      return false;
    }
  }  else {
    Serial.end();
    if (!Serial){
      this->useSerialMonitor=false;
      return true;
    } else {
      this->useSerialMonitor=false;
      return false;
    }
  }
}
...

Se provo a compilare ricevo un errore che non capisco, precisamente il seguente:

error: prototype for 'int MORSE::useSerial(boolean)' does not match any in class 'MORSE'
 MORSE::useSerial(boolean status){
 ^~~~~


Nel file .h la funzione useSerial io l'ho definita booleana, perchè mi genera un errore dicendo che il prototipo è una intera? Se provo a metterla void mi torna lo stesso errore. Non capisco dove sbaglio.
Qualcuno sarebbe così gentile da indirizzarmi?
Grazie a tutti.
Clemente

boolean MORSE::useSerial(boolean status) {

}

Se non specifichi il tipo restituito da una funzione esso è implicitamente int, per tale motivo si scrive void, per specificare che restituisce nulla.

Ciao.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.