I have a simple library which uses another library.
Here is the header:
#ifndef __DERIVEDCLASS_H__
#define __DERIVEDCLASS_H__
#include <HardwareSerial.h>
class DerivedClass
{
private:
HardwareSerial* serial;
public:
DerivedClass();
};
#endif
And the CPP:
#include "DerivedClass.h"
DerivedClass::DerivedClass()
{
}
And the sketch:
#include <DerivedClass.h>
void setup()
{
}
void loop()
{
}
This works fine.
However, if I change the library header to this:
#ifndef __DERIVEDCLASS_H__
#define __DERIVEDCLASS_H__
#include <SoftwareSerial.h>
class DerivedClass
{
private:
SoftwareSerial* serial;
public:
DerivedClass();
};
#endif
The sketch fails to compile:
/Users/andrew/Documents/Arduino/libraries/DerivedClass/DerivedClass.h:9: error: ISO C++ forbids declaration of 'SoftwareSerial' with no type /Users/andrew/Documents/Arduino/libraries/DerivedClass/DerivedClass.h:9: error: expected ';' before '*' token
Why is this? HardwareSerial is a built-in part of the Arduino, located in hardware/arduino/cores/arduino and SoftwareSerial is in libraries, but why would the build process differentiate between the two.