Js::Number extends Js::JVar extends Var
Js::JVar uses Js::Number in it.

So I've included jvar.h in Js::Number class. which compiles fine.
and I've made forward reference for Js::Number in jvar.h which doesn't compile and fires compilation errors.

Code:
jvar.cpp:31: error: invalid use of incomplete type 'struct Js::Number'
jvar.h:31: error: forward declaration of 'struct Js::Number'
and here goes my source code

jnumber.h
Code:
#include <../var.h>
#include "jvar.h"

namespace Js {
class Number : public Js::JVar{
  private:
    Var num;
  public:
    Number();
    Number(unsigned int val);
    Number(unsigned long val);
    Number(unsigned short val);
    Number(double val);
    Number(float val);
    Number(int val);
    Number(short val);
    Number(long val);
    ~Number();
};

}
Js::Number Compiles fine.

jvar.h
Code:
#include <string>
#include <memory>
#include "../var.h"

using std::string;
using std::auto_ptr;

namespace Js{
  class Number;//Line 31
  class String;
  class Array;
  class Object;
  class Function;
  class Bool;
}

namespace Js {
class JVar: public Var{
  private:
    string lhs;
    Var* rhs;
  public:
    JVar();
    JVar(JVar*);
    JVar(long);
    .....
}
jvar.cpp
Code:
.....
Js::JVar::JVar(long r): Var(), rhs(0x0){
	Js::Number* x = new Js::Number(r);//Line 31
	//rhs = auto_ptr<Var>(dynamic_cast<Var*>(x));
}
.....