Code:
#include "..\Objects\Objects.h"

class Idle;
class Objects;
class Goods;

class Activity
{
public:
	Objects *Actor;
	Goods *Target;
	Activity() : Actor(0), Target(0) { }
	Activity( Objects* actor, Goods* target )
	{
		Actor = actor;
		Target = target;
	}

	virtual bool OnUpdate(float seconds) = 0;

	void Update(float seconds)
	{
		if (OnUpdate(seconds))
		{
			Actor->activity = new Idle(Actor, NULL); <<<< incomplete type is not allowed
                        // activity is of type Activity *
		}
	}

	Activity *FindBestActivity(Objects *actor)
	{
		return NULL;
	}


};

/////////////////////
#include "..\Objects\Objects.h"
#include "Activity.h"

#define MAX_IDLE_TIME 8
#define ACTIVITY_IDLE_ENERGY 1.0

class Objects;
class Activity;

class Idle : public Activity
{
private:
	float mTimeInIdle;

public:
	Idle() : mTimeInIdle(0)	{ }
	Idle(Objects *actor, Goods *target) : Activity(actor, target)
	{

	}

	bool OnUpdate(float seconds)
	{
		mTimeInIdle += seconds;
		if (mTimeInIdle >= MAX_IDLE_TIME)
		{
			Actor->activity = FindBestActivity(Actor);
		}


		Actor->energy += ACTIVITY_IDLE_ENERGY * seconds;
		return false;
	}


};
Please help fix this problem.
Thanks
Jack