Out-of-line definition error on a class but it is declared in the header file

alxcyl picture alxcyl · Aug 9, 2012 · Viewed 22.4k times · Source

Now this is a weird problem. I was coding two days ago and stopped and then continued just now. On my header file (Fruit.h) I added a method called animateGrow() like so:

Fruit.h:

class Fruit {
private:
   // Member variables here

public:
   // Other methods here
   void animateGrow( );
};

But when I try to add the same method in the CPP file, I get an Out-of-line definition of 'animateGrow' does not match any declaration in 'Fruit' error. It's declared in the header but Xcode does not seem to be able to find that method.

Fruit.cpp:

#include "SimpleAudioEngine.h"
#include "Fruit.h"
#include "Tree.h"

using namespace cocos2d;
using namespace CocosDenshion;

Fruit::Fruit( ) {
   // Constructor
}

// Getter Methods
// Setter Methods
// Other Methods

void Fruit::animateGrow( ) {
   // I get an error here when I type it.
}

Full Code: (links removed) (In the code, the Tree class exists and all other methods and functions are working fine except for the animateGrow() as it gives me the error)

Answer

alxcyl picture alxcyl · Aug 9, 2012

Fixed it.

I don't know why but Xcode did not save my changes on the header file. I closed Xcode and opened the header file and the changes aren't there. I added the methods again and saved. I opened the CPP file added the new method in it worked fine.

Really weird.