Issue including EEPROM.h function calls within class

Hi guys, I’ve been searching a lot and can’t seem to get a solid answer on this. I’m trying to use EEPROM.read() and write() in a class. Can someone tell me where I’m going so terribly wrong? Thanks.

#ifndef _PHONEMEMORY_H_
#define _PHONEMEMORY_H_

#include <Arduino.h>
#include <string.h>
#include <EEPROM.h>


class PhoneMemory
{ 
  public:
   PhoneMemory();
   int addPhone(char *number);
};

#endif
#include "PhoneMemory.h"

int PhoneMemory::addPhone(char *number)
{
 EEPROM.read(1); 
}

Error:

PhoneMemory.cpp: In member function 'int PhoneMemory::addPhone(char*)':
PhoneMemory.cpp:12: error: 'EEPROM' was not declared in this scope

I appreciate any help.

Thanks.

What does your sketch look like? You can't hide the fact that you need EEPROM.h from the sketch.

The main .ino includes looks a like this:

#include <SoftwareSerial.h>       //Include the NewSoftSerial library to send serial commands to the cellular module.
#include <string.h>               //Used for string manipulations
#include "CircularBuffer.h"
#include "PhoneMemory.h"
#include <EEPROM.h>

I’ve tried it with both EEPROM.h being included and not included in the .ino. I find it weird that Serial will work just fine in the class but EEPROM won’t.

Thanks for your help.

Has anyone resolved this? I'm having exactly the same problem.

This code works under IDE 1.0.4

make sure you have “#include <EEPROM.h>” in the sketch ( not just library ).

[quote author=Bob Applegate link=topic=116028.msg1235634#msg1235634 date=1368156374] Has anyone resolved this? I'm having exactly the same problem.

[/quote]

I have no idea if what Pyro said is true, if it was fixed in a new IDE version. In case it isn't though, here is the work around I used:

uint8_t eepromRead(int address)
{
  return eeprom_read_byte((unsigned char *) address);
}

void eepromWrite(int address, uint8_t value)
{
  eeprom_write_byte((unsigned char *) address, value);
}

You just use those functions to read/write to the EEPROM if it won't work right any other way.

Hope that helps!