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));
}
.....