I have written a library, but have problem with error does not name a type. I've tryed everything, searched for couple of hours and no luck. Library is placed in the "libraries" folder of the arduino sketch folder. I am using OSX, but the same problem occurs on Windows also. You can find additional information and source code here:
The Arduino software requires that you include all libraries and their dependancies at top level in the sketch.
This is occasionally annoying but has the property that you know the full set libraries you are using.
So, how is OpticalSensor.cpp supposed to know what a File is?
You seem to be under the impression that you can hide include files that a library needs from the sketch. You can't.
Well "File" is under the "SD.h" library, which is included in the "OpticalSensor.h" and "OpticalSensor.h" is included in the "OpticalSensor.cpp" file. Even if I include "SD.h" library in "OpticalSensor.cpp" I still get the same error.
So, how is OpticalSensor.cpp supposed to know what a File is?
You seem to be under the impression that you can hide include files that a library needs from the sketch. You can't.
Well "File" is under the "SD.h" library, which is included in the "OpticalSensor.h" and "OpticalSensor.h" is included in the "OpticalSensor.cpp" file. Even if I include "SD.h" library in "OpticalSensor.cpp" I still get the same error.
Sorry, didn't understand it correctly. Ok if I include "SD.h" to sketch file, error for "File" goes away. Error for "Adafruit_RGBLCDShield" is still there and some other errors are added if I include "Adafruit_RGBLCDShield" to the sketch file.
Ok if I include "SD.h" to sketch file, error for "File" goes away. Error for "Adafruit_RGBLCDShield" is still there and some other errors are added if I include "Adafruit_RGBLCDShield" to the sketch file.
ALL libraries used by libraries used by the sketch need to be included in the sketch. You can not hide anything.
Ok if I include "SD.h" to sketch file, error for "File" goes away. Error for "Adafruit_RGBLCDShield" is still there and some other errors are added if I include "Adafruit_RGBLCDShield" to the sketch file.
ALL libraries used by libraries used by the sketch need to be included in the sketch. You can not hide anything.
The new errors are?
Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SerialInit(int)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:22: error: '_bitRate' was not declared in this scope
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDInit()':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:42: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:51: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:52: error: 'lcd' was not declared in this scope
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDCreateFile(String)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:63: error: no matching function for call to 'SDClass::exists(String&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:67: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:68: error: '_LCDWriteInTwoLines' was not declared in this scope
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:77: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:78: error: '_LCDWriteInTwoLines' was not declared in this scope
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:80: error: no matching function for call to 'SDClass::open(StringSumHelper&, int)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:74: note: candidates are: File SDClass::open(const char*, uint8_t)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:87: error: no matching function for call to 'SDClass::exists(StringSumHelper&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:91: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:92: error: '_LCDWriteInTwoLines' was not declared in this scope
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:100: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:101: error: '_LCDWriteInTwoLines' was not declared in this scope
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: At global scope:
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:115: error: prototype for 'void OpticalSensor::SDWriteToFile(String, String)' does not match any in class 'OpticalSensor'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.h:28: error: candidate is: void OpticalSensor::SDWriteToFile(String)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDOpenFileToStream(String)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:125: error: no matching function for call to 'SDClass::open(StringSumHelper&, int)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:74: note: candidates are: File SDClass::open(const char*, uint8_t)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: At global scope:
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:141: error: no 'void OpticalSensor::SDCloseStreaming(String)' member function declared in class 'OpticalSensor'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::_DelayAndClearLCD(bool)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:167: error: no match for 'operator||' in 'Serial || ((OpticalSensor*)this)->OpticalSensor::_lcd'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:167: note: candidates are: operator||(bool, bool)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:169: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:173: error: expected primary-expression before 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:173: error: expected `)' before 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In function 'double& ReadFromAnalogPort()':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:180: error: '_analogPort' was not declared in this scope
Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SerialInit(int)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:22: error: '_bitRate' was not declared in this scope
So, where do you think _bitRate is defined?
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDInit()':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:42: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:51: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
if(_lcd){
_lcd is an object, not a boolean and not a pointer. You can't do this.
Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SerialInit(int)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:22: error: '_bitRate' was not declared in this scope
So, where do you think _bitRate is defined?
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDInit()':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:42: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:51: error: could not convert '((OpticalSensor*)this)->OpticalSensor::_lcd' to 'bool'
if(_lcd){
_lcd is an object, not a boolean and not a pointer. You can't do this.
Thank you very much, noticed that, I was a little bit too sloppy. Managed to reduce errors (see below), but for others I really do not know what to do. I think it has to do something with pointers...
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDCreateFile(String)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:73: error: no matching function for call to 'SDClass::exists(String&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:90: error: no matching function for call to 'SDClass::open(StringSumHelper&, int)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:74: note: candidates are: File SDClass::open(const char*, uint8_t)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:97: error: no matching function for call to 'SDClass::exists(StringSumHelper&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: At global scope:
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:125: error: prototype for 'void OpticalSensor::SDWriteToFile(String&, String)' does not match any in class 'OpticalSensor'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.h:28: error: candidate is: void OpticalSensor::SDWriteToFile(String, String)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:133: error: prototype for 'void OpticalSensor::SDOpenFileToStream(String&)' does not match any in class 'OpticalSensor'
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.h:30: error: candidate is: void OpticalSensor::SDOpenFileToStream(String)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDCreateFile(String)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:73: error: no matching function for call to 'SDClass::exists(String&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)
This is telling you, plain and simple, that you can not use a String to contain the file name. Only NULL terminated arrays of chars, also known as strings, can be used. A String and a string are not the same thing.
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:97: error: no matching function for call to 'SDClass::exists(StringSumHelper&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp: In member function 'void OpticalSensor::SDCreateFile(String)':
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:73: error: no matching function for call to 'SDClass::exists(String&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)
This is telling you, plain and simple, that you can not use a String to contain the file name. Only NULL terminated arrays of chars, also known as strings, can be used. A String and a string are not the same thing.
/Users/gaspersladic/Documents/Arduino/libraries/OpticalSensor/OpticalSensor.cpp:97: error: no matching function for call to 'SDClass::exists(StringSumHelper&)'
/Applications/Arduino.app/Contents/Resources/Java/libraries/SD/SD.h:77: note: candidates are: boolean SDClass::exists(char*)