I'm having difficulty using a class object in another class. I'm in the Arduino libraries and have the following simplified code
eh.h
#include <SoftwareSerial.h>
class EH_Serial_class : public Stream
{
private:
uint8_t _mode;
SoftwareSerial *_soft; // SoftwareSerial is from SoftwareSerial.h
public:
EH_Serial_class();
~EH_Serial_class();
void config_soft(SoftwareSerial *soft);
}
eh.cpp
#include "eh.h"
EH_Serial_class::EH_Serial_class()
{
_mode = 0;
_soft = 0;
}
EH_Serial_class::~EH_Serial_class()
{
}
void EH_Serial_class::config_soft(SoftwareSerial *soft){
_mode = EH_SOFT_SERIAL;
_soft = soft;
}
I get the error that error: ‘SoftwareSerial’ has not been declared on the first declaration of SoftwareSerial
Can anyone help?
Edit: After following Jeffery's advice, I encountered a new error.
eh.h
//#include <SoftwareSerial.h>
class SoftwareSerial;
class EH_Serial_class : public Stream
{
private:
uint8_t _mode;
SoftwareSerial *_soft; // SoftwareSerial is from SoftwareSerial.h
public:
EH_Serial_class();
~EH_Serial_class();
void config_soft(SoftwareSerial *soft);
virtual size_t write(uint8_t byte);
}
eh.cpp
#include <SoftwareSerial.h> // tried after "#include eh.h" as well
#include "eh.h"
EH_Serial_class::EH_Serial_class()
{
_mode = 0;
_soft = 0;
}
EH_Serial_class::~EH_Serial_class()
{
}
void EH_Serial_class::config_soft(SoftwareSerial *soft){
_mode = EH_SOFT_SERIAL;
_soft = soft;
}
size_t EH_Serial_class::write(uint8_t byte){
switch(_mode){
case EH_STD_SERIAL:
return Serial.write(byte);
case EH_SOFT_SERIAL:
return _soft->write(byte);
default:
return 0;
}
return 0;
}
I'm getting the error:
error: invalid use of incomplete type ‘struct SoftwareSerial’
error: forward declaration of ‘struct SoftwareSerial’
I think I'm using pointers right... what am I doing wrong now?
SoftwareSerial.hso we can't know...